【问题标题】:Converting list object into custom Map using Java 8 stream object使用 Java 8 流对象将列表对象转换为自定义 Map
【发布时间】:2019-03-18 07:34:00
【问题描述】:

我有一个“First”类,其中包含对“Second”类的引用作为列表。我正在尝试通过使用 Stream(或)flap Map(或)groupingBy 以 Java 8 方式实现以下块

foreach(First a: listOfFirst){
    for (Second b: a.getSecondDetails()) {
        inputMap.put(b, a);
    }
}

我尝试了以下简化方式

listOfFirst.stream()
    .flatMap(p -> p.getSecondDetails().stream())
    .collect(Collectors.toMap(p -> p, q -> q));

我在这里遗漏了一些东西,请帮帮我

【问题讨论】:

  • 请详细说明这个问题

标签: java java-8 java-stream


【解决方案1】:

您需要“记住”每个Second 实例对应的First 实例。例如,您可以通过创建 Map.Entry 实例来做到这一点:

Map<Second,First> result =
    listOfFirst.stream()
               .flatMap(p->p.getSecondDetails()
                            .stream()
                            .map(sec -> new SimpleEntry<>(sec,p))
               .collect(Collectors.toMap(Map.Entry::getKey,
                                         Map.Entry::getValue));

【讨论】:

  • 这就是我要找的!!
猜你喜欢
  • 2021-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-11
  • 1970-01-01
  • 2011-12-23
  • 2020-03-16
  • 1970-01-01
相关资源
最近更新 更多