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

    xiaoxiao2023-10-25  159

    重写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进行业务操作"); } } }

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

    最新回复(0)