public class s { public static void main(String[] args) { List<User> users = new ArrayList<User>(); List<User> newUsers = new ArrayList<User>(); List<String> names = new ArrayList<String>(); User u1 = new User(99, "u1", "18"); User u2 = new User(100, "u1", "14"); User u3 = new User(100, "u3", "14"); User u4 = new User(101, "u4", "13"); User u5 = new User(101, "u5", "12"); users.add(u1); users.add(u2); users.add(u3); users.add(u4); users.add(u5); boolean contain; for(int i = 0;i < users.size();i++){ //假设取出一条数据后,后面有一样的id,num就+1,如果没有就把自己加在新的list中 int num = 0; contain = names.contains(users.get(i).getName()); names.add(users.get(i).getName()); //在下一次循环的时候不考虑之前出现过得id if(contain == false){ for(int j = i+1; j <= users.size() - 1;j++){ int id = users.get(i).getId(); String age = users.get(i).getAge(); if(id == users.get(j).getId()){ num ++; String newName = users.get(i).getName(); User newU = new User(id,newName,age); newUsers.add(newU); } } if(num == 0){ newUsers.add(users.get(i)); } } } for(int k = 0; k < newUsers.size();k++ ){ System.out.print("id:" + newUsers.get(k).getId() + " "); System.out.print("name:" + newUsers.get(k).getName() + " "); System.out.print( "age:" + newUsers.get(k).getAge()+ " "); System.out.println(); } } }
此方法是关于name去重,id去重也一样!
输出结果为:
id:99 name:u1 age:18 id:100 name:u3 age:14 id:101 name:u4 age:13 id:101 name:u5 age:12 本人也是遇到这个问题解决一上午,需要拿去!