JDK 8利用分組統計從List找出重複元素

概述


List中有找出重複元素,也可以利用JDK 8的流來完成。

 public static void main(String[] args) {
        List<String> parameterList = Arrays.asList("1","2","2","3","3","4","4","5","6","7","8");
        List<String> resultList = parameterList.stream().collect(Collectors.collectingAndThen(Collectors
                .groupingBy(Function.identity(), Collectors.counting()),map->{
            map.values().removeIf(size -> size == 1);
            List<String> tempList = new ArrayList<>(map.keySet());
            return tempList;
        }));
        System.out.println(resultList);
    }

上面的代碼首先是先分組,並利用Collectors.counting()統計出每個小組的總數,如果分組內的元素總數等於1,則沒有重複,反之,大於1,則說明該元素有重複的。

因此,我們還需要對每個分組進行處理,可以在groupingBy方法的第三個參數,拿到分好後的所有小組。


Collectors.groupingBy(Function.identity(), Collectors.counting()),map->{
            map.values().removeIf(size -> size == 1);
            List<String> tempList = new ArrayList<>(map.keySet());
            return tempList;
        }

這裏使用一個笨辦法來找出重複的元素,如果小組內的元素個數等於1的,則刪除掉。剩下的分組則都是有重複元素的。程序的輸出結果如下:

[2, 3, 4]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章