Set集合和实现类
2014-12-06 10:43
190 查看
1 HashSet是主要的实现类,Set中常用的方法都是Collection下定义的。
2 无序性:无序性!=随机性。指元素在底层存储的位置是无序的
不可重复性:加入相同元素时,后面的元素不能加入进去
3 注意:要求加进Set中的元素,一定要重写equals和hashCode方法
才能保证Set中元素的不可重复性。
4 Set中元素如何存储的?使用哈希算法,如同安排学生坐在教室的不同位置,元素存放在内存的不同位置。
5 当向Set中添加对象时,首先调用此对象所在类的hashCode(),计算此对象的哈希值,此哈希值决定了此对象在Set中的存储位置。若此位置没有对象存储,则这个对象直接存储在此位置,若此位置已有对象存储,再通过equals()比较两个对象是否相同,如果相同,后面的元素不能添加进来。
要求:hashcode()方法值与equals方法一致。
结果:
1482401
1482401
4
[AA, 55, 23, Student [id=001, name=xi]]
2 无序性:无序性!=随机性。指元素在底层存储的位置是无序的
不可重复性:加入相同元素时,后面的元素不能加入进去
3 注意:要求加进Set中的元素,一定要重写equals和hashCode方法
才能保证Set中元素的不可重复性。
4 Set中元素如何存储的?使用哈希算法,如同安排学生坐在教室的不同位置,元素存放在内存的不同位置。
5 当向Set中添加对象时,首先调用此对象所在类的hashCode(),计算此对象的哈希值,此哈希值决定了此对象在Set中的存储位置。若此位置没有对象存储,则这个对象直接存储在此位置,若此位置已有对象存储,再通过equals()比较两个对象是否相同,如果相同,后面的元素不能添加进来。
要求:hashcode()方法值与equals方法一致。
package lianxi2; import java.util.HashSet; import java.util.Set; import org.junit.Test; public class TestSet { @Test public void test1(){ Set set = new HashSet(); 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]]
相关文章推荐
- java中Set集合的遍历及实现类比较分析
- Java集合的实现细节—Set集合和Map集合
- JavaSE学习实战完全笔记--集合的实现细节--Set和Map
- 黑马程序员_集合-set实现类
- golang实现set集合,变相实现切片去重
- 多重集合set 的list实现详解
- 深入Java集合学习系列:ConcurrentHashSet简单实现
- Go实现集合set
- Python 使用list实现简单的集合set
- Set集合实现元素不重复原理
- Java 7之集合类型第6篇 - Set集合的实现
- Java集合源码学习(10)_Set接口的实现HashSet
- Java集合源码学习(9)_Set接口的基础实现AbstractSet
- Java中的Set集合接口实现插入对象不重复的原理
- Java中Set集合的遍历及实现类比较分析
- Java学习疑点(6)--Set集合添加元素时底层如何实现无重复元素?
- java集合之间的关系及实现细节(1)——Set与Map
- Java 7之集合类型第6篇 - Set集合的实现
- 集合,Set实现类笔记
- Java基础知识强化之集合框架笔记47:Set集合之TreeSet保证元素唯一性和比较器排序的原理及代码实现(比较器排序)