Java Streams 列表将出现的索引映射为键

标签 java java-8 java-stream grouping

假设我有一个字符串列表

["bird", "bird", "dog", "dog", "bird","bog"]

我希望它们以以下形式收集为 map

{"bird": [0, 1, 4], "dog": [2, 3, 5]}

列表值是单词在输入列表上的索引。

有没有办法用 Java Streams 来做到这一点?

最佳答案

是的,您可以将 IntStreamCollectors.groupingBy 一起使用:

List<String> list = List.of("bird", "bird", "dog", "dog", "bird", "bog");

IntStream.range(0, list.size())
         .boxed()
         .collect(Collectors.groupingBy(list::get));

输出:

{bird=[0, 1, 4], bog=[5], dog=[2, 3]}

关于Java Streams 列表将出现的索引映射为键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51901633/

相关文章:

java - 在 Android 中解析复杂的 JSON

Java8 泛型拼图

Java 8 : How do I work with exception throwing methods in streams?

java - 使用具有 Maps 键集的流时出现 ConcurrentModificationException

java - 如何将 List<Obj1> 转换为 Map<Obj1.prop, List<Obj1.otherProp>

java - 当我使用自定义类加载器时出现 ClassCastException

java - 维基百科 API 返回的摘录没有文章中的所有字符?

java - 未实例化的整数将位于内存中的什么位置?

java - Java 8 中函数式接口(interface)的使用

java - 使用 Java 8 迭代时从列表对象中删除空间