【问题标题】:How to populate a HashMap using a Lambda Expression如何使用 Lambda 表达式填充 HashMap
【发布时间】:2015-05-26 07:05:02
【问题描述】:

有一个类(SomeOrders),它的字段很少,如IdSummaryAmount等...

要求将Id 作为键和SummarySomeOrder 对象的输入List 中收集到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 表达式实现相同的功能?

【问题讨论】:

  • 是的,几乎一样。 stackoverflow.com/questions/4138364/… 但以上只是一般性的问题,从那个答案可以用 Lambda 表达式找到。不管怎样,谢谢你通知我。
  • 不要混淆 lambda 表达式stream 函数操作。我想你想得到功能操作的答案,如下面的答案。

标签: java dictionary lambda java-8 hashmap


【解决方案1】:

使用Collectors.toMap

orders.stream().collect(Collectors.toMap(SomeOrder::getID, SomeOrder::getSummary));

orders.stream().collect(Collectors.toMap(o -> o.getID(), o -> o.getSummary()));

【讨论】:

  • 如果订单列表有重复并且地图应该有一个列表来收集订单摘要怎么办? List 到 Map>
  • 如何像这样填充 EnumMap ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-08
  • 2018-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多