我需要计算数组中单词的频率。并处理结果(我认为它必须是一个entrySet)... entrySet的顺序也很重要。所以我想,该数组必须转换为LinkedHashMap ...
Map<String, Integer> map = new LinkedHashMap<>();
for(String word : words) {
Integer count = map.get(word);
count = (count == null) ? 1: ++count;
map.put(word, count);
}
我找到了下一个解决方案,但订单不受尊重。 是否可以在没有收集操作的情况下使用该流(但使用map或flatMap)?
Map<String, Long> collect =
wordsList.stream().collect(groupingBy(Function.identity(), counting()));
谢谢。
答案 0 :(得分:0)
你已经关闭但是你需要使用groupingBy收集器,它带有3个这样的参数:
LinkedHashMap<String, Long> resultSet =
wordsList.stream()
.collect(groupingBy(Function.identity(),
LinkedHashMap::new,
counting()));
groupingBy收藏家的第二个论点是供应商,在您的情况下,因为您需要LinkedHashMap
,那么您需要提供的内容如上所示。< / p>