使用set集合去除重复元素

本文详细介绍了如何利用Java中的Set集合进行对象去重的操作。通过创建一个Student类,重写equals()和hashCode()方法,确保对象的比较基于属性而非内存地址。接着,使用HashSet作为Set的实现类,添加多个Student对象到集合中,展示了Set集合自动去重的特性。最后,输出结果展示Set集合仅保留了不重复的元素,验证了去重效果。
摘要由CSDN通过智能技术生成

如何使用set集合去重

        我们都知道,set集合是无序的,这样也导致set集合里面的元素是不能重复的,因为这一个特性,所以我们经常用set集合进行去重操作,我们下面以一个简单的例子说明set集合是如何进行去重的。

创建去重对象

        首先,我们需要创建去重的对象,这里我创建一个Student类。为了方便,我没有对此类进行封装,同时写出该类的全参构造方法,方便后面的赋值。同时重写toString()方法,方便后面打印的效果,否则默认的toString()打印的是地址,然后重写equals()方法和hashCode()方法,否则后面进行比较的是哈希值,哪怕后面的名字,年龄,性别都相同也会因为哈希值不同而导致判断不同,重写之后只要名字,年龄,性别都相同,那么值就是相同的。

public class Student {
    String name;//姓名
    int age;//年龄
    char sex;//性别

    public Student(String name, int age, char sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
//重写toString()方法 IDEA使用快捷键Alt+insert,选择toString即可完成重写
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex=" + sex +
                '}';
    }
//重写equals()方法和hashCode()方法 IDEA使用快捷键Alt+insert,选择equals() and hashCode()
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age && sex == student.sex && Objects.equals(name, 
        student.name);
    }

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

创建集合对象

        因为set是一个接口,所以不能创建对象,我们通过set的实现类Hashset以多态形式进行创建

public class TestSet {
    public static void main(String[] args) {
        HashSet<Student> set = new HashSet<>();//创建集合对象,泛型为我们去重对象Student
        Student s1 = new Student("张三", 30, '男');//创建Student对象并录入值
        Student s2 = new Student("李四", 33, '男');
        Student s3 = new Student("张三", 30, '男');
        Student s4 = new Student("王五", 37, '男');
        set.add(s1);//将Student类型的值添加到集合里
        set.add(s2);
        set.add(s3);
        set.add(s4);
        System.out.println(set);//输出集合
    }
}

输出结果

      我们可以发现,集合里面有三组数据,明明我们添加了4个Student类型数据,为什么集合里只有3个,原因是set集合不允许重复的元素,s1和s3相同,所以只保存一次,以此来达到去除重复元素的效果

       以上就是set集合去重的一个简单案例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值