如何使用Lambda表达式填充HashMap

13

有一个类(SomeOrders),它有一些字段,如IdSummaryAmount等。

要求从输入的SomeOrder对象列表中收集Id作为键,Summary作为值,并将其放入HashMap中。

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表达式实现相同的功能?


1
可能是Java:如何将List转换为Map的重复问题。 - Alexis C.
1
是的,几乎一样。https://dev59.com/N2855IYBdhLWcg3wy3sc 但上面只是一般性的问题,可以通过Lambda表达式找到一个答案。 无论如何,感谢您通知我。 - Paramesh Korrakuti
不要混淆lambda表达式流函数操作。我认为你想要得到函数操作的答案,如下所示。 - Alex
1个回答

37

使用Collectors.toMap

orders.stream().collect(Collectors.toMap(SomeOrder::getID, SomeOrder::getSummary));
或者
orders.stream().collect(Collectors.toMap(o -> o.getID(), o -> o.getSummary()));

3
如果订单列表中有重复项,而且需要一个List来收集订单摘要,那该怎么办呢? List<> 转 Map<String, List<String>> - prime
如何填充类似这样的EnumMap? - insanely_sin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接