方式一:
首先创建一个map,然后遍历list,把list元素作为map的key,初始的value设置为1,如果遍历到重复的key,value加1,这样我们就统计出想要的结果了。
Map<String, Integer> nameMap = Maps.newHashMap();
nameLists.forEach(name -> {
Integer counts = nameMap.get(name);
nameMap.put(name, counts == null ? 1 : ++counts);
});
System.out.println(nameMap);
方式二:
Java8后我么又有了新的统计方法,我们可以使用stream()一步到位。
Map<String, Long> nameMap = nameLists.stream().collect(Collectors.groupingBy(p -> p, Collectors.counting()));
方式三:
Java8还有其他的统计方式:
Map<String, Integer> nameMap = Maps.newHashMap();
nameLists.forEach(name -> nameMap.compute(name, (k, v) -> v == null ? 1 : ++v));