JAVA-List对象某个字段去重

    xiaoxiao2021-03-25  61

    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   本人也是遇到这个问题解决一上午,需要拿去!

    转载请注明原文地址: https://ju.6miu.com/read-39661.html

    最新回复(0)