微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.jb51.cc/java/128338.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐