集合框架源碼分析(jdK1.7)(八) HashSet

目錄

1數據結構

2.主要參數

3.核心構造方法

4 add(E e)

5.HashSet遍歷的3種方式


1數據結構

private transient HashMap<E,Object>map;

可以看出HashSet是有一個HashMap來維護的,所以和HashMap的數據結構完全相同

2.主要參數

private transient HashMap<E,Object> map;

//用Object充當HashMap的Value

private static final Object PRESENT = new Object();

3.核心構造方法

public HashSet() {
   
map = new HashMap<>();
}

 


不多解釋就是創建了一個HashMap

4 add(E e)

public boolean add(E e) {

      //相當於HashMap.put(e,new Object())
    return map.put(e, PRESENT)==null;
}

 

所以HashSet就只有HashMap中的Key值,Value值爲Object

5.HashSet遍歷的3種方式

public static void main(String[] args) {
 
 HashSet set =new HashSet();
   
set.add("A");
   
set.add("C");
   
set.add("B");
   
set.add("D");
   
System.out.println(set);
   
//循環
   
for (Object a:set) {
       
System.out.print(a);
   
}
    System.out.println();
   
//迭代遍歷
   
Iterator it=  set.iterator();
    while (it.hasNext()){
       
System.out.print(it.next());
   
}
    System.out.println();
   
//裝換爲數組遍歷
   
Object objects[]= set.toArray();
   
for (int i=0;i<objects.length;i++){
       
System.out.print(objects[i]);
   
}

}

 

 

表明HashSet是是無序的

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章