Java 8 优雅地计算列表元素出现次数

78 阅读1分钟

在业务中时常有对用户传入的数据做校验的情况。比如某种条件下限制某个配置出现的次数,如果超出次数则给用户对应的提示。通常方法是遍历集合放入Map中,遍历Map看value的大小。

例如: image.png image.png

Java 8中如何优雅实现呢?



public static void main(String[] args) {
    List<String> stringList = CollectionsUtil.asList("apple", "banana", "apple", "apple", "banana", "orange", "orange", "orange", "orange");
    Map<String, Long> stringMap = stringList.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
    stringMap.forEach((k, v) -> {
        System.out.println("key:" + k + "  nums:" + v);
    });
}

//输出
key:orange  nums:4
key:banana  nums:2
key:apple   nums:3