容器(Collection/Map)、容器中的设计模式
生活随笔
收集整理的這篇文章主要介紹了
容器(Collection/Map)、容器中的设计模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.容器
主要包括:
- Collection:存儲著對象的集合
- Map:存儲著鍵值對(兩個對象) 的映射表。
1.1 Collection
- Set
- List
- Queue
1.1.1 Set
- TreeSet:
- HashSet
- LinkedHashSet
對比:
| 紅黑樹 | 有序性操作 | O(logN) |
| 哈希表 | 快速查,不支持有序性操作 | O(N) |
| 雙向鏈表 | 使用雙向鏈表維護 | O(N) |
1.1.2 List
- ArrayList
- Vector
- LinkedList
對比:
| 動態數組 | 隨機訪問 | 否 |
| 動態數組 | 隨機訪問 | 是 |
| 雙向鏈表 | 只能順序訪問; 可快速插入刪除; 可以用作棧、隊列和雙向隊列 | 否 |
1.1.3 Queue
- LinkedList
- PriorityQueue
對比:
| 雙向鏈表 | 雙向隊列 |
| 堆 | 優先隊列 |
1.2 Map
- TreeMap
- Hashtable
- LinkedHashMap
- HashMap
對比:
| 紅黑樹 | 否 |
| 哈希表 | 是 |
| 用雙向鏈表維護元素的順序 順序為插入順序或者 最近最少使用(LRU) 順序 | 否 |
| 哈希表 | 否 |
*:Hashtable是遺留類,不建議使用。現在可以使用 ConcurrentHashMap 來支持線程安全,并且ConcurrentHashMap 的效率會更高,因為 ConcurrentHashMap 引入了分段鎖。
2.容器中的設計模式
2.1 迭代器模式
Collection 實現了 Iterable 接口,其中的 iterator() 方法能夠產生一個 Iterator 對象,通過這個對象就可以迭代遍歷 Collection 中的元素。
從 JDK 1.5 之后可以使用 foreach 方法來遍歷實現了 Iterable 接口的聚合對象:
List<String> list = new ArrayList<>();list.add("a");list.add("b");for (String item : list) {System.out.println(item);}2.2 適配器模式
java.util.Arrays#asList() 可以把數組類型轉換為 List 類型:
@SafeVarargs public static <T> List<T> asList(T... a)應該注意的是 asList() 的參數為泛型的變長參數,不能使用基本類型數組作為參數,只能使用相應的包裝類型數組。
Integer[] arr = {1, 2, 3}; List list = Arrays.asList(arr);也可以使用以下方式調用 asList():
List list = Arrays.asList(1,2,3);?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的容器(Collection/Map)、容器中的设计模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法练习day19——190410(数组
- 下一篇: 设计模式理解:模板方法