我正在将一个应用程序传递Java6
给java-8,在某些情况下我们必须计算列表中 a的出现次数。 String
为此,我们使用:
Collections.frequency(lista, stringALocalizar);
我认为这部分不应该被触及。相反,如果我们必须计算String
整个列表中的所有内容及其出现次数,我们必须遍历列表并使用 aHashMap<String, Integer>
来存储结果,而不是执行可能导致的额外迭代Collections.frequency
。像这样的东西:
for (String stringALocalizar : lista) {
if (mapaDeResultados.containsKey(stringALocalizar)) {
mapaDeResultados.put(stringALocalizar, mapaDeResultados.get(stringALocalizar)+1);
} else {
mapaDeResultados.put(stringALocalizar, 1);
}
}
如何使用java-8流获得相同的结果?
您可以使用
它所做的是对列表的元素进行分组并对出现次数进行计数,
Function.identity()
它指示分组是针对列表中的每个不同字符串并Collectors.Counting()
返回一个Collector
对流的元素进行计数的,该对象返回一个类型变量中的计数Long
,即为什么将地图声明为Map<String, Long>
.