zoukankan      html  css  js  c++  java
  • List集合去除重复对象。。。记录一下

    类中只有这
    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));




  • 相关阅读:
    进程间通讯,线程间通讯
    进程与线程
    学习自测6.0
    学习自测5.0
    学习自测4.0
    学习自测3.0
    学习自测2.0
    学习自测1.0
    PS中怎么复制某个图层的效果?
    初学前端犯下的错误(用于反省)
  • 原文地址:https://www.cnblogs.com/jiahaoJAVA/p/10868823.html
Copyright © 2011-2022 走看看