概述
從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]