天天看點

黑馬程式員-集合(補充總結)

------Java教育訓練、Android教育訓練、iOS教育訓練、.Net教育訓練、期待與您交流! -------

①Set集合:

特點:

不能夠存儲重複元素

無序的集合(元素的存與取順序不同)

線程不同步的集合,有安全隐患

Set集合的繼承關系:

HashSet集合:

底層: 哈希表結構

無序

LinkedHashSet集合:

底層: 哈希表結構 + 連結清單結構

有序

它是HashSet集合的子類

TreeSet集合:

底層: 二叉樹結構

無序的集合(元素的存與取順序不同)

有序(元素按照自然排序接口 或者 比較器接口來排序)  

HashSet:

如何保證元素的唯一性?

重寫hashCode()方法 與 equals() 方法

HashSet集合對象 底層是通過 HashMap集合來建立的

TreeSet:

如何保證元素的唯一性與排序的?

方式1: 通過實作自然排序接口 Comparable [ compareTo(Object obj ) ]

方式2: 通過實作比較器接口   Comparator [ compare( Object o1, Object o2 ) ]

傳回值:

等于0 : 代表 兩個對象相同, 新元素不存儲到集合

大于0:

小于0:

代表 兩個對象不同, 新元素存儲到集合, 同時排序

可以按照指定的規則進行排序 

注意: API中提供的類, 通常都實作了 Comparable接口,而我們自己建立的類沒有實作,是以,自己的類 需要實作接口

②java中參數的傳遞:

如果傳遞的是基本資料類型(包含String類型):

形參的改變,對實參 沒有影響

如果傳遞的是引用資料類型 

形參的改變, 對實參 有影響

③Map: 雙列集合

特點:

鍵是唯一的

值可以重複的

Map集合體系關系

Map:

|- HashMap

|- TreeMap

Map集合中的方法:

添加功能:

V put(K key, V value)

删除功能:

void clear()

V remove(Object key) 

判斷功能:

boolean containsKey(Object key) 

boolean containsValue(Object value)

boolean isEmpty() 

擷取功能:

Set<Map.Entry<K,V>> entrySet()

V get(Object key) 

Set<K> keySet()

Collection<V> values() 

長度功能:

int size()

HashMap:

特點:

底層:哈希表結構

如何保證HashMap集合中key是唯一的???

重寫key 所對應的類中的 hashCode() 與 equals() 方法

注意: 如果 key 是API中提供的類,不需要自己重寫,因為API已經重寫好了, 而自己定義的類,必須要重寫

TreeMap:

特點:

底層: 二叉樹結構

如何保證TreeMao集合中的key 是唯一和排序的??

有兩種方式:

方式1:  實作 自然排序接口  

Comparable {  compareTo(Object o) }

方式2:  實作 比較器接口

Comparator { compare(Object o1, Object o2) }

注意: 具體如何比較的代碼 需要自己來實作

④Map集合周遊的兩種方式:

方式1: 鍵 找 值

a: 擷取集合中所有的key

b: 擷取到每一個key

c: 通過目前的key, 擷取到對應的值 value

方式2: 鍵值對, 找鍵,找值

a: 擷取集合中所有的鍵值對對象 

b: 擷取到每一個鍵值對對象

c: 通過鍵值對對象, 找鍵,找值

⑤HashMap集合與 Hashtable集合的差別?

Hashtable: 

是一個Map集合

它是一個線程同步的集合, 安全

鍵不能為null , 值不能為null

HashMap:

它是一個線程不同步的集合

鍵可以為null, 值可以為null