JAVA-List对象某个字段去重

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值