これが私の仕事:
double total = allWaybills.stream()
.flatMap(waybill -> waybill.setOfPacking.stream())
.mapToInt(packing -> packing.PRICE)
.sum();
を私は任意のマルチレベルストリーム操作がないので、について推論する方が簡単だと思います。
flatMapToIntを使用して、フラットマップとマップ操作を複数のレベルにすることなく1つの操作で置き換える方法を知りたいと思います。ここで
はテストプログラムです: - .NETのLINQのののJava同等の、またはあなたが実際 `java.io.を意味しています
import java.util.Set;
import java.util.List;
import java.util.HashSet;
import java.util.ArrayList;
import java.util.stream.Collectors;
public class HelloWorld
{
public static class Packing
{
public int PRICE = 0;
}
public static class Waybill
{
public Set<Packing> setOfPacking = new HashSet<Packing>();
}
public static void main(String []args){
List<Waybill> allWaybills = new ArrayList<Waybill>();
Waybill w1 = new Waybill();
Packing p1 = new Packing(); p1.PRICE = 1; w1.setOfPacking.add(p1);
Packing p2 = new Packing(); p2.PRICE = 2; w1.setOfPacking.add(p2);
allWaybills.add(w1);
Waybill w2 = new Waybill();
Packing p3 = new Packing(); p3.PRICE = 3; w2.setOfPacking.add(p3);
Packing p4 = new Packing(); p4.PRICE = 4; w2.setOfPacking.add(p4);
allWaybills.add(w2);
double total = allWaybills.stream()
.flatMap(waybill -> waybill.setOfPacking.stream())
.mapToInt(packing -> packing.PRICE)
.sum();
System.out.println("total = "+total);
}
}
明確にするために、「ストリーム」で、あなたはJavaのストリームAPIを参照していますあなたはデシリアライズしなければなりません? – Dai
@Daiはい、私はjava.io.Streamを意味します。 – Denis
@Denis - 私はあなたが 'java.util.stream.Stream' –
AjahnCharles