重写Set方法,自定义去重规则

重写Set方法,自定义去重规则

封装数据:
   private static List<DBUser> getData(){
        List<DBUser> list = new ArrayList<>();
        DBUser user = new DBUser();
        user.setUserID(123);
        user.setDname("张三");
        DBUser user2 = new DBUser();
        user2.setUserID(222);
        user2.setDname("李四");
        DBUser user3 = new DBUser();
        user3.setUserID(333);
        user3.setDname("张三");
        DBUser user4 = new DBUser();
        user4.setUserID(444);
        user4.setDname("李四");
        DBUser user5 = new DBUser();
        user5.setUserID(555);
        user5.setDname("张三");
        list.add(user);
        list.add(user2);
        list.add(user3);
        list.add(user4);
        list.add(user5);
        return list;
    }

重写规则:
 public static void main(String[] args) {
        //得到数据
        List<DBUser> list = getData();
        //重写set方法
        Set<DBUser> set = new TreeSet<DBUser>(new Comparator<DBUser>() {
            @Override
            public int compare(DBUser o1, DBUser o2) {
                //字符串,则按照asicc码升序排列
                return o1.getDname().compareTo(o2.getDname());
            }
        });
        //把需要去重的list放入set中
        set.addAll(list);
        //遍历set中的数据,得到去重后的数据
        for (DBUser dbUser : set) {
            System.out.println(dbUser.getDname());
        }
        /**************************************************/
        //不去重,排序;在新List的构造方法中传入重写的set
        List<DBUser> newList = new ArrayList<>(set);
        for (int i = 0; i < newList.size(); i++) {
            List<DBUser> userList = new ArrayList<>();
            for (DBUser u : list) {
                if (u.getDname().equals(newList.get(i).getDname())) {
                    userList.add(u);
                }
            }
            for (DBUser dbUser : userList) {
                System.out.println("得到分组后的每一个list进行业务操作");
            }
        }
    }

一个简单明了的例子,希望能帮到大家

猜你喜欢

转载自blog.csdn.net/XuYuanChong/article/details/90548378
今日推荐