public class User {
private int id;
private String name;
private String age;
public User(){
}
public User(int id,String name,String age){
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
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
本人也是遇到这个问题解决一上午,需要拿去!