Set和Map
- Set和Map
- Set
- Set中的常用方法:
- Map
- Map中的常用方法:
Set和Map
TreeSet和TreeMap在Java中利用搜索樹實作的Map和Set;實際上是用的紅黑樹,而紅黑樹是一顆近似平衡的二叉搜索樹,
關于二叉搜索樹 :見下面鏈接:
鏈接
HashSet和HashMap在java中利用哈希表實作;Java中使用哈希桶方式解決沖突的;Java會在沖突鏈表長度大于一定的閥值后,將鏈表轉變為搜索樹(紅黑樹);
Set
注意:
- Set繼承自Collection介面類
- Set中只存盤了key,并且要求key一定唯一
- Set的底層是使用Map實作的,其使用key與Object的一個默認物件作為鍵值對插入到Map中
- Set的最大功能就是對集合中的元素去重
- 實作Set介面的常用類有TreeSet、HashSet,還有一個LinkedSet,LinkedSet是在HashSet的基礎上維護了一個雙向鏈表來記錄元素的插入順序
- Set中的key不能修改,如果需要修改,將原來的洗掉掉,重新插入
- Set中不能插入null的key
Set中的常用方法:
| 方法 | 解釋 |
|---|---|
| boolean add(E e) | 添加元素 |
| void clear() | 請空 |
| boolean contains(Object o) | 判斷元素是否存在 |
| boolean remove(Object o) | 洗掉元素 |
| Object[] toArray() | Set中的元素轉換陣列 |
Map
Map中存盤的就是Key-value的鍵值對,Set中只存盤了key,
Map是一個介面類,沒有繼承Collection,該類中存盤的是的鍵值對,并且k一定是唯一的,不能重復,
注意:
- Map是一個介面,不能實體化物件,如果需要只能,實體化其實作類TreeMap和HashMap,
- Map中存放的鍵值對的key是唯一的,value可以重復
- 在Map中,插入鍵值對的時候,key不能為空,但是value可以為空
- Map中的key可以全部分離出來存盤在Set中(因為key不重復)
- Map中value可以分離出來,存盤在Collection中(因為value有重復)
- Map的key不能修改,只能洗掉再重新插入,value可以修改
Map中的常用方法:
| 方法 | 解釋 |
|---|---|
| V get(Object key) | 回傳key對應的value |
| V getOrDefault(Object key,Object defaultValue) | 回傳key對應的value ,key不存在回傳默認值 |
| V put(K key ,V value) | 設定key對應的value,第一次為插入 |
| V remove(Object o) | 洗掉key對應的映射關系 |
| boolean containsKey(Object key) | 判斷是否包含key |
| boolean containsValue(Object value) | 判斷是否包含value |
| Set<Map.Entry<k,v>>entrySet() | 回傳所有的key-value映射關系 |
關于Map.Entry<k,v>
Map.Entry<k,v>是Map中實作存放key-value的內部類,主要提供了key-value的獲取,以及value的設定和key的比較方式,
| 方法 | 解釋 |
|---|---|
| K getKey() | 回傳entry中key |
| V getValue() | 回傳entry中value |
| V setValue(V value) | 將鍵值對中value替換 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/276610.html
標籤:java
上一篇:Java高并發26-釋放鎖以及ReentrantLock實體演示
下一篇:IDEA的優化配置
