類中只有這
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));