在Java中,可以使用stream的distinct()方法來去重,并且使用collect()方法將結果收集到一個新的集合中。
例如,假設有一個包含重復元素的List:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 2, 3, 4);
要去重并取出重復的元素,可以按照以下步驟進行:
Stream<Integer> numberStream = numbers.stream();
Stream<Integer> distinctStream = numberStream.distinct();
List<Integer> distinctNumbers = distinctStream.collect(Collectors.toList());
這樣,distinctNumbers中就包含了去重后的元素:[1, 2, 3, 4, 5]。
如果要獲取重復的元素,可以使用filter()方法來篩選出重復的元素,然后使用collect()方法將結果收集到一個新的集合中。例如,獲取重復的元素2、3、4可以按照以下步驟進行:
Stream<Integer> numberStream = numbers.stream();
Stream<Integer> duplicateStream = numberStream.filter(i -> Collections.frequency(numbers, i) > 1);
List<Integer> duplicateNumbers = duplicateStream.distinct().collect(Collectors.toList());
這樣,duplicateNumbers中就包含了重復的元素:[2, 3, 4]。