java中set实现类_Set集合和实现类

1 HashSet是主要的实现类,Set中常用的方法都是Collection下定义的。

2 无序性:无序性!=随机性。指元素在底层存储的位置是无序的

不可重复性:加入相同元素时,后面的元素不能加入进去

3 注意:要求加进Set中的元素,一定要重写equals和hashCode方法

才能保证Set中元素的不可重复性。

4 Set中元素如何存储的?使用哈希算法,如同安排学生坐在教室的不同位置,元素存放在内存的不同位置。

5 当向Set中添加对象时,首先调用此对象所在类的hashCode(),计算此对象的哈希值,此哈希值决定了此对象在Set中的存储位置。若此位置没有对象存储,则这个对象直接存储在此位置,若此位置已有对象存储,再通过equals()比较两个对象是否相同,如果相同,后面的元素不能添加进来。

要求:hashcode()方法值与equals方法一致。

packagelianxi2;importjava.util.HashSet;importjava.util.Set;importorg.junit.Test;public classTestSet {

@Testpublic voidtest1(){

Set set= newHashSet();

set.add(23);

set.add(55);

set.add(new String("AA")); //重写了equals和hashcode方法

set.add(new String("AA"));

Student stu1= new Student("001","xi"); //没重写时,用object的equals方法比较的是地址值

Student stu2 = new Student("001","xi"); //重写后,后面元素不能添加了

System.out.println(stu1.hashCode());

System.out.println(stu2.hashCode());

set.add(stu1);

set.add(stu2);

System.out.println(set.size());

System.out.print(set);

}

}

结果:

1482401

1482401

4

[AA, 55, 23, Student [id=001, name=xi]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值