gpt4 book ai didi

java - Map.Entry::getKey 在 groupby 下抛出错误

转载 作者:行者123 更新时间:2023-11-30 01:46:08 26 4
gpt4 key购买 nike

Map.Entry::getKey 为以下代码抛出错误

Map<String,List <String> > bikes= new HashMap<>();

bikes.put("ROBBIN",Arrays.asList("FZ","APACHE","HONDA"));
bikes.put("VIN",Arrays.asList("FZ","HONDA"));
bikes.put("GRACE",Arrays.asList("APACHE","HONDA"));
bikes.put("RUBBY",Arrays.asList("FZ","BUS","HONDA"));


Map<String, List<String>> group1;
bikes.entrySet().stream()
.flatMap(x->x.getValue().stream())
.collect(Collectors.groupingBy(
Function.identity(),
Collectors.mapping(Map.Entry::getKey,
Collectors.toList())
));

最佳答案

flatMap(x->x.getValue().stream())转换您的Stream<Map.Entry<String,List <String>>>Stream<String> ,所以你没有 Map.Entry不再是了。

看起来您想反转输入 Map (即将输入 List 的值的 Map 元素设为输出 Map 的键)。

这可以按如下方式完成:

Map<String, List<String>> group1 =
bikes.entrySet()
.stream().flatMap(e->e.getValue()
.stream()
.map(v->new SimpleEntry<String,String>(v,e.getKey())))
.collect(Collectors.groupingBy(Map.Entry::getKey,
Collectors.mapping(Map.Entry::getValue,
Collectors.toList())));

现在flatMap变换每个 Map.Entry<String,List<String>>多个 Map.Entry<String,String>实例,每个实例都包含一个键,该键的值是 List<String>和一个值,它是原始 Map.Entry 的键.

这将导致以下结果 Map :

{BUS=[RUBBY], FZ=[ROBBIN, VIN, RUBBY], APACHE=[GRACE, ROBBIN], HONDA=[GRACE, ROBBIN, VIN, RUBBY]}

关于java - Map.Entry::getKey 在 groupby 下抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57883002/

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