随心笔记,第三更
List对象根据某个或多个对象去重
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
// ...
List<Person> persons = // ... 你的Person列表
List<Person> uniquePersons = persons.stream()
.collect(Collectors.toMap(
Person::getName, // keyMapper - 从Person对象中提取name字段作为Map的键
p -> p, // valueMapper - 直接使用Person对象作为Map的值(这里可以省略,因为默认就是对象本身)
(existing, replacement) -> existing, // mergeFunction - 如果key冲突,选择保留已存在的对象(即去重)
LinkedHashMap::new)) // mapFactory - 使用LinkedHashMap来保持插入顺序(如果需要的话)
.values() // 获取Map的所有值,即去重后的Person列表
.stream() // 再次转换为Stream,以便可以进一步操作(如果需要的话)
.collect(Collectors.toList()); // 收集为List
List<Person> uniquePersons = persons.stream()
.collect(Collectors.toMap(
p -> new AbstractMap.SimpleEntry<>(p.getName(), p.getAge()), // 使用SimpleEntry作为键
p -> p,
(existing, replacement) -> existing, // 如果键冲突,保留已存在的对象
LinkedHashMap::new)) // 保持插入顺序
.values()
.collect(Collectors.toList());
欢迎大家在评论区讨论,今天的干货分享就到此结束了,如果觉得对您有帮助,麻烦给个三连!
以上内容为本人的经验总结和平时操作的笔记。若有错误和重复请联系作者删除!!感谢支持!!