1つのクラス(SomeOrders
)があり、Id
、Summary
、Amount
などのフィールドはほとんどありません。
要件は、Id
オブジェクトの入力Summary
から、キーとしてHashMap
を収集し、値としてList
をSomeOrder
に収集することです。
前のコードJava 8:
List<SomeOrder> orders = getOrders();
Map<String, String> map = new HashMap<>();
for (SomeOrder order : orders) {
map.put(order.getId(), order.getSummary());
}
Java 8のLambda式で同じことを実現するにはどうすればよいですか?
使用する Collectors.toMap
:
orders.stream().collect(Collectors.toMap(SomeOrder::getID, SomeOrder::getSummary));
または
orders.stream().collect(Collectors.toMap(o -> o.getID(), o -> o.getSummary()));