此问题在此处已有答案:
Java 8, Stream of Integer, Grouping indexes of a stream by the Integers?(4个回答)
7天前关闭
这篇文章是编辑并提交审查6天前.
我正在尝试使用Stream对列表中的项目进行分组。
public static void main(String[] args) {
List<String> l = Arrays.asList("A", "C", "B", "A", "B");
Map<String, List<String>> b = l.stream().collect(Collectors.groupingBy(Function.identity()));
System.out.println(b.toString());
}
字符串
返回{A=[A, A], B=[B, B], C=[C]}
。
我怎样才能得到每个元素的索引呢?像这样,{A=[(A,0), (A,3)], B=[(B,2), (B,4)], C=[(C,1)]}
。
这个问题与this问题不同,在this问题中,他们只想要索引,但我想要索引和列表项。
4条答案
按热度按时间e5nqia271#
这里是如何做你想要的。
字符串
指纹
型
使用记录允许您在从Map中检索记录后使用记录的getter检索每个元素。
mmvthczy2#
您需要按照这样的顺序专门Map元素。下面是您需要输出的代码。
字符串
输出为:{A=[(A,0),(A,3)],B=[(B,2),(B,4)],C=[(C,1)]}
如果有帮助,请投赞成票并标记为正确。
jk9hmnmh3#
您可以像这样将
groupingBy
与List::get(int index)
一起使用:字符串
输出
型
正如您所看到的,响应与您预期的略有不同。我认为显示
(B,2)
是多余的。编辑
由于OP坚持显示相同的输出,我建议创建一个自定义对象,包含一个字母和索引,如下所示:
型
你的流应该看起来像这样:
型
产出
型
gfttwv5a4#
使用streaming和groupingBy得到了这个解决方案。
字符串
输出量:
型