list.stream().distinct
时间: 2023-09-24 16:05:05 浏览: 84
引用<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [list.stream distinct列表去重](https://blog.csdn.net/sinat_27115575/article/details/102456083)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
相关问题
list.stream().distinct().count()
list.stream().distinct().count()的作用是对列表进行去重,并返回去重后的元素数量。\[1\]这个方法会根据对象的hashCode()和equals()方法来判断元素是否重复。如果全部字段值都一样的对象才会被去重,部分字段一样的对象不会被去重。\[1\]这个方法返回的是一个long类型的值,表示去重后的元素数量。
#### 引用[.reference_title]
- *1* [Java8 list.stream()操作使用心得](https://blog.csdn.net/diyangxia/article/details/125519699)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [jdk 8新特性 List.stream() .distinct() 去重 List中对象 多条件去重](https://blog.csdn.net/qq_41080067/article/details/118518696)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [Java 8 Stream.distinct() 列表去重示例](https://blog.csdn.net/haiyoung/article/details/80934467)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
list.stream().distinct()指定属性进行去重
是的,`list.stream().distinct()`可以对List集合中的元素进行去重操作,如果需要按照对象的某个属性进行去重,可以使用Java8的`distinct()`方法配合Lambda表达式实现。
例如,假设我们有一个Person类,其中有name和age两个属性,现在我们需要按照name属性进行去重,代码如下:
```
List<Person> list = new ArrayList<>();
list.add(new Person("Tom", 20));
list.add(new Person("Jerry", 22));
list.add(new Person("Tom", 21));
list.add(new Person("Jerry", 22));
List<Person> distinctList = list.stream().distinct().collect(Collectors.toList());
List<Person> distinctListByName = list.stream().distinct().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Person::getName))), ArrayList::new));
System.out.println(distinctList); // [Person{name='Tom', age=20}, Person{name='Jerry', age=22}, Person{name='Tom', age=21}]
System.out.println(distinctListByName); // [Person{name='Jerry', age=22}, Person{name='Tom', age=20}]
```
其中,`distinct()`方法可以去除List中的重复元素,但是默认情况下是根据元素的equals方法进行比较的,如果需要按照某个属性进行比较,则需要使用Lambda表达式指定比较方式。
上述代码中,我们使用了两种方式进行去重,第一种方式是直接使用`distinct()`方法进行去重,第二种方式是先通过`toCollection()`方法将List转换成TreeSet,再通过Lambda表达式指定比较方式,最后再将TreeSet转换成List,实现按照name属性进行去重。
阅读全文