让我们假设我有一个很长的字符串列表。我想计算每个字符串的出现次数。我不知道字符串有多少和哪种(意思是:我没有所有可能字符串的字典)
我的第一个想法是创建一个Map,并在每次找到密钥时增加整数。
但这感觉有点笨拙。有没有更好的方法来计算所有出现的字符串?
从Java 8开始,最简单的方法是使用流:
Map<String, Long> counts =
list.stream().collect(
Collectors.groupingBy(
Function.identity(), Collectors.counting()));
在Java 8之前,您当前概述的方法可以正常工作。 (而Java 8+方式基本上也是一样的,只是用更简洁的语法)。
你也可以不用流来做到这一点:
Map<String, Long> map = new HashMap<>();
list.forEach(x -> map.merge(x, 1L, Long::sum));