hotmeatballsoup:
私は、次のJava POJOを持っています:
public class Order {
private List<OrderLine> orderLines;
private String name;
// ... lots of other fields
// Getters & setters & ctors down here
}
public class OrderLine {
private String productId;
private Integer quantity;
// Getters & setters & ctors down here
}
私がために、すべての注文ラインの総量をつかむのJavaの8「ストリー」の道を見つけようとしています。このカウントをつかんの「古い」の方法は、次のようになります。
int totalQuantity = 0;
for (OrderLine ol : order.getOrderLines()) {
totalQuantity += ol.getQuantity();
}
これまでの私の最高の試み:
Integer totalQuantity = order.getOrderLines().stream().filter(ol -> ol.getQuantity());
私はそののを反復処理ではないので、これは間違っている知っているList<OrderLine>
と、各ラインの量を合計し、以来、それがコンパイルされませんfilter(...)
に解決するための式を必要とするboolean
、ではないint
値。
私がゆがんで行くよ任意のアイデア?
サミュエル・フィリップ:
あなたは探しているStream.mapToInt()
作成した、IntStream
とIntStream.sum()
。あなたはこれを試すことができます。
int totalQuantity = order.getOrderLines().stream()
.mapToInt(OrderLine::getQuantity)
.sum();
これは、オーダーからすべての注文明細行の合計品質を合計します。