gpt4 book ai didi

Java 8 流,将对象列表转换为 Map>

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:05:41 24 4
gpt4 key购买 nike

我已经看过几个示例,但这些示例对我不起作用。

这是我正在尝试做的事情:

我有一个 List<SomeClass>属于以下类别:

class SomeClass {
String rid;
String name;
...
}

我的 List 中的值看起来像这样:

SomeClass(1,"apple")
SomeClass(1,"banana")
SomeClass(1,"orange")
SomeClass(2,"papaya")
SomeClass(2,"peaches")
SomeClass(3,"melons")

我要转换上面的List进入Map<String, Set<String>> ,其中关键是 rid值为 Setname字段。

使用 Java 解决此问题 Streams我正在使用 groupingBy我可以得出以下解决方案:

someClassList
.stream()
.map(SomeClass::getName)
.collect(
Collectors.groupingBy(
SomeClass::getRid, Collectors.toSet()));

但这给了我编译错误。我该如何解决这个问题?我的方法有什么问题?

最佳答案

当您调用 .map(SomeClass::getName) 时在你的 Stream<SomeClass> ,你会得到一个 Stream<String> .你不能执行 collect(Collectors.groupingBy(SomeClass::getRid,...))Stream<String> 上(您只能在 Stream<SomeClass> 上执行它)。因此你的map步骤错误。

您需要通过 CollectorCollectors.mapping() 返回至 Collectors.groupingBy()为了映射 SomeClass实例到 String s after 它们按 getRid 分组.

Map<String, Set<String>> map =
someClassList.stream()
.collect(Collectors.groupingBy(SomeClass::getRid,
Collectors.mapping(SomeClass::getName,
Collectors.toSet())));

关于Java 8 流,将对象列表转换为 Map<String, Set<String>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51374186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com