Java Streams | groupingBy相同的元素

前端之家收集整理的这篇文章主要介绍了Java Streams | groupingBy相同的元素前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个单词流,我想根据相同元素(=单词)的出现对它们进行排序.

例如:{hello,world,hello}

Map<String,List<String>>

你好你好你好}

世界,{世界}

到目前为止我有什么:

Map<Object,List<String>> list = streamofWords.collect(Collectors.groupingBy(???));

问题1:流似乎丢失了他正在处理字符串的信息,因此编译器强制我将类型更改为Object,List

问题2:我不知道在胃肠道内放入什么,以同样的方式将其分组.我知道我能够处理lambda表达式中的单个元素,但我不知道如何到达每个元素的“外部”以检查是否相等.

谢谢

解决方法

您要搜索的KeyExtractor是标识功能
Map<String,List<String>> list = streamofWords.collect(Collectors.groupingBy(Function.identity()));

编辑补充说明:

> Function.identity()使用一个方法返回一个’Function’,它只返回它获得的参数.> Collectors.groupingBy(Function< S,K> keyExtractor)提供收集器,其收集流的所有元素到Map< K,List< S>>.它使用keyExtractor实现来检查流的S类对象,并从中推导出类型为K的键.此键是映射的键,用于获取(或创建)添加了流元素的结果映射中的列表.

原文链接:https://www.f2er.com/java/128338.html

猜你在找的Java相关文章