加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java Streams | groupingBy相同的元素

发布时间:2020-12-15 02:57:27 所属栏目:Java 来源:网络整理
导读:我有一个单词流,我想根据相同元素(=单词)的出现对它们进行排序. 例如:{hello,world,hello} 至 MapString,ListString 你好你好你好} 世界,{世界} 到目前为止我有什么: MapObject,ListString list = streamofWords.collect(Collectors.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的键.此键是映射的键,用于获取(或创建)添加了流元素的结果映射中的列表.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读