java遍历hashset_Java HashSet集合存储遍历学生对象代码实例

本文通过代码实例展示了Java中HashSet集合如何存储和遍历学生对象。当尝试添加重复元素时,由于默认的hashCode和equals方法,重复元素仍会被添加。为避免这种情况,需要在学生对象类中重写hashCode和equals方法。重写后,重复元素将不会出现在HashSet中。
摘要由CSDN通过智能技术生成

acd740fcd46d4d1d3a5a4fdbb422be80.png

由于Set集合是不存储重复元素的,所以在做此案例时,如果我正常添加一个重复元素是什么结果呢?

public class HashSetDemo {

public static void main(String[] args) {

//创建HashSet集合对象

HashSet hashSet = new HashSet();

//创建学生对象

Student s1 = new Student("爱学习", 21);

Student s2 = new Student("爱Java", 22);

Student s3 = new Student("坚持不懈", 23);

Student s4 = new Student("爱Java", 22);

//把学生添加到集合

hashSet.add(s1);

hashSet.add(s2);

hashSet.add(s3);

hashSet.add(s4);

//遍历集合(增强for循环)

for (Student s : hashSet) {

System.out.println(s.getName() + "," + s.getAge());

}

}

}

运行结果:

1b58354637de88adc1828348976eeeb6.png

通过运行结果,我们发现,重复的元素仍然被添加进去,是什么原因呢? 根据源码分析和HashSet底层数据结构可以知道,如果两个对象的哈希值相同(hashCode方法),并且对象的内容也相同(equals方法),是不会存储在哈希表的。所以我们需要在被存储的对象类中重写hashCode方法和equals方法,来解决添加了重复元素的问题。

在对象类中重写hashCode方法和equals方法后(自动生成即可)运行上面的代码,运行结果:

3a700ced91613fafc3384dc8ea14cd5a.png

可见,重复的元素未被添加到集合。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值