在Java中,distinct()
是一個用于Stream流的中間操作方法,它可以用于去除流中的重復元素,并返回一個新的流。
distinct()
方法基于元素的hashCode()
和equals()
方法來判斷元素是否重復。如果兩個元素的hashCode()
返回值相等并且equals()
方法返回值為true
,則這兩個元素被認為是重復的。
使用示例:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 3, 2, 1);
List<Integer> distinctNumbers = numbers.stream()
.distinct()
.collect(Collectors.toList());
System.out.println(distinctNumbers); // 輸出:[1, 2, 3, 4]
在上述示例中,我們首先創建了一個包含重復元素的整數列表numbers
。然后,我們使用stream()
方法將其轉換為一個流,接著使用distinct()
方法去除重復元素,并最后使用collect()
方法將流轉換為列表。最終,我們得到了一個不包含重復元素的列表distinctNumbers
。
需要注意的是,distinct()
方法是基于元素的內容來判斷是否重復的,而不是基于元素的引用。因此,在使用distinct()
方法時,元素的類必須正確實現hashCode()
和equals()
方法,以確保正確去除重復元素。