Java distinct()详解
时间: 2023-05-28 15:04:11 浏览: 106
Java中的distinct()方法是用于过滤集合中的重复元素的方法。它返回一个新的集合,其中包含原始集合中不同的元素。
下面是一个示例代码,演示如何使用Java的distinct()方法:
```java
List<Integer> numbers = Arrays.asList(1, 2, 3, 2, 3, 4, 5, 4, 6);
List<Integer> distinctNumbers = numbers.stream().distinct().collect(Collectors.toList());
System.out.println(distinctNumbers); // [1, 2, 3, 4, 5, 6]
```
在这个例子中,我们创建了一个整数列表,其中包含重复的元素。然后我们使用流操作来调用distinct()方法来获取不同的元素,并将它们收集到一个新的列表中。
需要注意的是,distinct()方法使用元素的equals()方法来判断它们是否相等。因此,如果我们想要使用自定义的相等性判断逻辑,我们可以使用Java 8中的另一个方法:distinct(Function<T,?> keyExtractor)。这个方法接受一个函数,该函数将元素转换为它们的关键字,然后使用这些关键字来判断元素是否相等。例如,我们可以使用以下代码来过滤出一个字符串列表中的唯一元素:
```java
List<String> strings = Arrays.asList("foo", "bar", "foo", "baz", "qux", "foo");
List<String> uniqueStrings = strings.stream().distinct(String::toLowerCase).collect(Collectors.toList());
System.out.println(uniqueStrings); // [foo, bar, baz, qux]
```
在这个例子中,我们使用String::toLowerCase方法将字符串转换为小写字母,并将转换后的字符串作为关键字来判断它们是否相等。因此,我们得到了一个只包含小写字母的唯一字符串列表。
阅读全文