实体列表去重

返回实体列表去重的一些思路

最近做新员工课题,需要实现在方法返回的一个实体类的List集合里去重(以实体类的某个字段为唯一标识),第一反应是利用Set+重写hashcode()和equals()方法,然后再将Set转回List,或者每次往集合里加实体的时候遍历比较(😓),于是试了试

用个简单的类来代替一下,值得一提的是 java1.7引进的Objects.equals()方法避免了空指针异常的出现
public class Student {
    private String name = " ";
    private String id   = " ";
    private int    age  = 0;

    public String getName() {
        return name;
    }

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

    public String getId() {
        return id;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return getAge() == student.getAge() &&
                Objects.equals(getName(), student.getName()) &&
                Objects.equals(getId(), student.getId());
    }

    @Override
    public int hashCode() {
        return Objects.hash(getName(), getId(), getAge());
    }
}

上面两种方法都不够优雅,还有更简单的方法,就是用HashMap,唯一标识作为key,实体作为value,然后在构造List的时候传入map.values()。继续积累经验吧。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容