如何使用Lambda表达式填充HashMap

Par*_*uti 10 java lambda dictionary hashmap java-8

还有一类(SomeOrders),它具有像几个字段Id,Summary,Amount,等...

要求是从对象输入中收集Id作为关键字和Summary值的值.HashMapListSomeOrder

java 8之前的代码:

List<SomeOrder> orders = getOrders();
Map<String, String> map = new HashMap<>();
for (SomeOrder order : orders) {
    map.put(order.getId(), order.getSummary());
}
Run Code Online (Sandbox Code Playgroud)

如何在Java 8中实现与Lambda表达式相同的功能?

Era*_*ran 30

用途Collectors.toMap:

orders.stream().collect(Collectors.toMap(SomeOrder::getID, SomeOrder::getSummary));
Run Code Online (Sandbox Code Playgroud)

要么

orders.stream().collect(Collectors.toMap(o -> o.getID(), o -> o.getSummary()));
Run Code Online (Sandbox Code Playgroud)

  • 如果订单列表中有重复项,并且地图上应该有一个List来收集订单摘要怎么办?List &lt;&gt;到Map &lt;String,List &lt;String &gt;&gt; (2认同)