重写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进行业务操作");
}
}
}
一个简单明了的例子,希望能帮到大家