【问题标题】:Count frequency of words and return list of lists in java8 [duplicate]计算java8中单词的频率并返回列表列表[重复]
【发布时间】:2018-03-02 07:53:27
【问题描述】:

我想统计一个句子中单词的出现频率。

句子是:

“嘿嘿嘿”`

输出应该是:

List[List["hey",2],List["hi",1]]`

【问题讨论】:

  • 到目前为止你尝试了什么
  • 您确定要List<List> 吗?可能是Map<String, Integer>
  • List["Hey",2] 可能不是您想要的,列表的元素类型必须是统一的(我怀疑您知道哪种类型)。您的结果会更好地记录在字数/计数图 (Map<String,Integer>) 中。

标签: java java-8 java-stream


【解决方案1】:

如果您改变主意想要Map<String, Integer>,这里有一个方法(因为无论如何List<List<Object>> 没有什么意义)

 youList.stream()
        .collect(Collectors.groupingBy(
             Function.identity(),
             Collectors.counting()
 ))

您可以将 Collectors.counting() 替换为 Collectors.summingInt(x -> 1) 以在 java-8 下进行小幅改进。

【讨论】:

  • 为了完整性:Pattern.compile("\\s+").splitAsStream("hey hi hey") 而不是 youList.stream()
  • @Lino 如果 Op 会说“我有一个字符串...”(我有一个 List)会同意...
  • @Lino nvm 显然已编辑 :) 我有一个列表
猜你喜欢
  • 2013-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-20
  • 2017-11-18
  • 2022-12-19
相关资源
最近更新 更多