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

it2026-10-08  1

类中只有这class Role_permission{ private Integer id;private Integer rid;private Integer pid;} 重写这两个方法 判断规则pid一致我就认为两个比较的类相同 @Overridepublic 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;}@Overridepublic 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));

转载于:https://www.cnblogs.com/jiahaoJAVA/p/10868823.html

最新回复(0)