list對象中的數據如何去重呢?


下文筆者講述list對象的去重方法分享,list的實現類是我們存儲數據的容器,

當里面存儲的對象存在重復值時,我們該如何對其進行去重操作呢?

下文筆者將一一道來,首先我們需了解對象是否重復,需借助equals方法進行判斷,所以我們需重寫equals方法,

然后再將list中的數據放入到set集合中,使其自動去重,如下所示:

實現思路: 1.重寫類中的hashcode和equals方法 
2.將list對象放入一個set對象中即可達到自動去重的效果
package com.java265.other;
import java.util.*;
public class test {
    public static void main(String[] args) {
        /*
        * author:java265.com
        * list去重操作示例分享
        * */
        List<User> list = new ArrayList<>();
        list.add(new User("1","xiaoming"));
        list.add(new User("2","xiaoming"));
        list.add(new User("3","xiaoming"));
        list.add(new User("4","xiaoming"));
        list.add(new User("4","xiaoming"));
 
        System.out.println(list);
        System.out.println("------------");
        //去重
        Set<User> set = new HashSet<>();
        set.addAll(list);
        System.out.println(set);
    }
}

class User{
    private String id;
    private String name;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public User() {
    }

    public  User(String id,String name){
         this.id = id;
         this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        return Objects.equals(id, user.id) &&
                Objects.equals(name, user.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, name);
    }
}

轉自:http://java265.com/JavaJingYan/202112/16385440541991.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM