------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