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的键.此键是映射的键,用于获取(或创建)添加了流元素的结果映射中的列表. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |