java容器类--------set接口解析(二)

 

java容器类--------set接口解析(二)_第1张图片

 

1,每次介绍相关接口时,我都会把上面的图重新传一遍,这样看着图理解起来方便!!!

   set接口没有提供collection 接口额外的方法,但实现set接口的容器类中的元素是不可重复的!!,

2,set容器与数学中的“集合”概念相对应

3,JDK API中所提供的set容器类常用的有:

   ---HashSet 底层按照哈希码进行存储的类。

   ---TreeSet底层按照二叉树进行存储的容器类。

   ---LinkedHashSet 底层按照链表进行存储的容器类。

 

Ø 实现 Set 接口的容器存对象时:
根据每个对象的哈希码值 ( 调用 hashCode() 获得 ) 用固定的算法算出它的存储索引,把对象存放在一个叫散列表的相应位 ( 表元 ) 中:
如果对应的位置没有其它元素,就只需要直接存入。
如果该位置有元素了,会将新对象跟该位置的所有对象进行比较 ( 调用 equals()) ,以查看是否已经存在了:还不存 在就存放,已经存在就直接使用。

Ø 实现 Set 接口的容器存对象时
取对象时:
根据对象的哈希码值计算出它的存储索引,在散列表的相应位置 ( 表元 ) 上的元素间进行少量的比较操作就可 以找出它。
Set 接口存、取、删对象都有很高的效率。
对于要存放到 Set 容器中的对象,对应的类一定要重写 equals() hashCode(Object obj) 方法 以实现对象相等规 则。
 
 
下面是HasSet的用法:
 
 
HashSet set = new HashSet();////或者多态Set hashSet = new HashSet();

		set.add("a");
		set.add("b");
		set.add("c");
		set.add("d");
		Iterator it = set.iterator();
		while(it.hasNext()){
			System.out.println(it.next());
		}

 
 

  

 

 

 

 

 

 

你可能感兴趣的:(java,jdk,object,equals,iterator,存储)