java 一个list 根据另一个list属性去重
时间: 2023-08-25 19:06:18 浏览: 42
回答: 要根据一个list的属性去重另一个list,你可以使用Java 8的Stream API来实现。其中,你可以使用filter方法和distinctByProperty方法来过滤和去重list。以下是一个示例代码:
List<MyObject> myList = ... // 你的对象列表
List<MyObject> distinctList = myList.stream().filter(distinctByProperty(MyObject::getSomeProperty)).collect(Collectors.toList());
其中,distinctByProperty是一个自定义的方法,用于根据对象的某个属性进行去重。你可以根据你的需求来实现这个方法。\[2\]
另外,你还可以使用collectingAndThen方法和toCollection方法来实现去重。以下是一个示例代码:
List<Person> people = new ArrayList<>();
Person p111 = new Person();
p111.setId(111);
p111.setName("Yang");
p111.setAge(31);
people.add(p111);
Person p112 = new Person();
p112.setId(111);
p112.setName("Yang");
p112.setAge(31);
people.add(p112);
Person p113 = new Person();
p113.setId(112);
p113.setName("Liu");
p113.setAge(22);
people.add(p113);
people = people.stream().collect(collectingAndThen(toCollection(() -> new TreeSet<>(Comparator.comparing(Person::getId))), ArrayList::new));
在这个示例中,我们使用了collectingAndThen方法和toCollection方法来创建一个TreeSet,并根据Person对象的id属性进行去重。最后,我们将去重后的结果转换为ArrayList。\[3\]
希望这些示例代码能够帮助到你!
#### 引用[.reference_title]
- *1* *2* [java List对象> 根据对象的一个属性进行去重](https://blog.csdn.net/sunyanhu_1/article/details/131469357)[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^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [java8 List根据元素对象属性去重](https://blog.csdn.net/u014082714/article/details/128144539)[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^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]