码迷,mamicode.com
首页 > 其他好文 > 详细

List集合去除重复对象。。。记录一下

时间:2019-05-15 14:12:31      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:array   contains   相同   treeset   集合   mission   long   对象   als   

类中只有这
class Role_permission{
private Integer id;

private Integer rid;

private Integer pid;
}

重写这两个方法 判断规则pid一致我就认为两个比较的类相同

@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (this == obj) {
return true;
}
if (obj instanceof Role_permission) {
Role_permission rp = (Role_permission) obj;
if (rp.pid.equals(this.pid)) {//添加自己的规则true为相同
return true;
} else {
return false;
}
}
return false;
}

@Override
public int hashCode() {
int result = pid.hashCode();//添加自己的规则也是一样
return result;
}
第一种方案
List<Role_permission> list1 = new ArrayList<Role_permission>(new LinkedHashSet<>(去重集合));

第二种方案
List<Role_permission> personList = new ArrayList<>();
去重集合.stream().forEach(
        p -> {
if (!personList.contains(p)) {
personList.add(p);
}
}
);
第三种方案
Set<Role_permission> ts = new HashSet<Role_permission>();
ts.addAll(去重集合); 原理应该跟第一种类似

第四种方案
List<Role_permission> unique =去重集合.stream().collect(collectingAndThen(toCollection(() -> new TreeSet<>(comparingLong(Role_permission::getPid))), ArrayList::new));




List集合去除重复对象。。。记录一下

标签:array   contains   相同   treeset   集合   mission   long   对象   als   

原文地址:https://www.cnblogs.com/jiahaoJAVA/p/10868823.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!