如果我有一个字符串,如何创建 Map<Character, List<Integer>>
它映射了每个字符在使用流时出现的索引。这就是我目前所拥有的并且它有效,有没有更优雅的方法来做到这一点?
Map<Character, List<Integer>> occurs = IntStream.range(0, str.length())
.boxed()
.collect(toMap(str::charAt , Arrays::asList, (v1, v2) -> {
List<Integer> list = new ArrayList<>();
list.addAll(v1);
list.addAll(v2);
return list;
}));
最佳答案
您不需要自己实现此行为 - 只需使用内置 Collectors#groupingBy
:
Map<Character, List<Integer>> occurs =
IntStream.range(0, str.length())
.boxed()
.collect(Collectors.groupingBy(str::charAt));
关于java - java 8中两个列表的合并函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47948296/