生活随笔
收集整理的這篇文章主要介紹了
Java中常见数据结构:list与map
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 1
:集合
2 Collection(單列集合)
3 List(有序,可重復)
4 ArrayList
5 底層數據結構是數組,查詢快,增刪慢
6 線程不安全,效率高
7 Vector
8 底層數據結構是數組,查詢快,增刪慢
9 線程安全,效率低
10 LinkedList
11 底層數據結構是鏈表,查詢慢,增刪快
12 線程不安全,效率高
13 Set(無序,唯一)
14 HashSet
15 底層數據結構是哈希表。
16 哈希表依賴兩個方法:hashCode()和equals()
17 執行順序:
18 首先判斷hashCode()值是否相同
19 是:繼續執行equals(),看其返回值
20 是true:說明元素重復,不添加
21 是false:就直接添加到集合
22 否:就直接添加到集合
23 最終:
24 自動生成hashCode()和equals()即可
25
26 LinkedHashSet
27 底層數據結構由鏈表和哈希表組成。
28 由鏈表保證元素有序。
29 由哈希表保證元素唯一。
30 TreeSet
31 底層數據結構是紅黑樹。(是一種自平衡的二叉樹)
32 如何保證元素唯一性呢?
33 根據比較的返回值是否是0來決定
34 如何保證元素的排序呢?
35 兩種方式
36 自然排序(元素具備比較性)
37 讓元素所屬的類實現Comparable接口
38 比較器排序(集合具備比較性)
39 讓集合接收一個Comparator的實現類對象
40 Map(雙列集合)
41 A:Map集合的數據結構僅僅針對鍵有效,與值無關。
42 B:存儲的是鍵值對形式的元素,鍵唯一,值可重復。
43
44 HashMap
45 底層數據結構是哈希表。線程不安全,效率高
46 哈希表依賴兩個方法:hashCode()和equals()
47 執行順序:
48 首先判斷hashCode()值是否相同
49 是:繼續執行equals(),看其返回值
50 是true:說明元素重復,不添加
51 是false:就直接添加到集合
52 否:就直接添加到集合
53 最終:
54 自動生成hashCode()和equals()即可
55 LinkedHashMap
56 底層數據結構由鏈表和哈希表組成。
57 由鏈表保證元素有序。
58 由哈希表保證元素唯一。
59 Hashtable
60 底層數據結構是哈希表。線程安全,效率低
61 哈希表依賴兩個方法:hashCode()和equals()
62 執行順序:
63 首先判斷hashCode()值是否相同
64 是:繼續執行equals(),看其返回值
65 是true:說明元素重復,不添加
66 是false:就直接添加到集合
67 否:就直接添加到集合
68 最終:
69 自動生成hashCode()和equals()即可
70 TreeMap
71 底層數據結構是紅黑樹。(是一種自平衡的二叉樹)
72 如何保證元素唯一性呢?
73 根據比較的返回值是否是0來決定
74 如何保證元素的排序呢?
75 兩種方式
76 自然排序(元素具備比較性)
77 讓元素所屬的類實現Comparable接口
78 比較器排序(集合具備比較性)
79 讓集合接收一個Comparator的實現類對象
80
81 2
.關于集合選取原則
82
83 是否是鍵值對象形式:
84 是:Map
85 鍵是否需要排序:
86 是:TreeMap
87 否:HashMap
88 不知道,就使用HashMap。
89
90 否:Collection
91 元素是否唯一:
92 是:Set
93 元素是否需要排序:
94 是:TreeSet
95 否:HashSet
96 不知道,就使用HashSet
97
98 否:List
99 要安全嗎:
100 是:Vector
101 否:ArrayList或者LinkedList
102 增刪多:LinkedList
103 查詢多:ArrayList
104 不知道,就使用ArrayList
105 不知道,就使用ArrayList
106
107 3
:集合的常見方法及遍歷方式
108 Collection:
109 add()
110 remove()
111 contains()
112 iterator()
113 size()
114
115 遍歷:
116 增強for
117 迭代器
118
119 |--
List
120 get()
121
122 遍歷:
123 普通for
124 |--
Set
125
126 Map:
127 put()
128 remove()
129 containskey(),containsValue()
130 keySet()
131 get()
132 value()
133 entrySet()
134 size()
135
136 遍歷:
137 根據鍵找值
138 根據鍵值對對象分別找鍵和值
139 ?
1:集合(自己補齊)Collection(單列集合)List(有序,可重復)ArrayList底層數據結構是數組,查詢快,增刪慢線程不安全,效率高Vector底層數據結構是數組,查詢快,增刪慢線程安全,效率低LinkedList底層數據結構是鏈表,查詢慢,增刪快線程不安全,效率高Set(無序,唯一)HashSet底層數據結構是哈希表。哈希表依賴兩個方法:hashCode()和equals()執行順序:首先判斷hashCode()值是否相同是:繼續執行equals(),看其返回值是true:說明元素重復,不添加是false:就直接添加到集合否:就直接添加到集合最終:自動生成hashCode()和equals()即可LinkedHashSet底層數據結構由鏈表和哈希表組成。由鏈表保證元素有序。由哈希表保證元素唯一。TreeSet底層數據結構是紅黑樹。(是一種自平衡的二叉樹)如何保證元素唯一性呢?根據比較的返回值是否是0來決定如何保證元素的排序呢?兩種方式自然排序(元素具備比較性)讓元素所屬的類實現Comparable接口比較器排序(集合具備比較性)讓集合接收一個Comparator的實現類對象Map(雙列集合)A:Map集合的數據結構僅僅針對鍵有效,與值無關。B:存儲的是鍵值對形式的元素,鍵唯一,值可重復。HashMap底層數據結構是哈希表。線程不安全,效率高哈希表依賴兩個方法:hashCode()和equals()執行順序:首先判斷hashCode()值是否相同是:繼續執行equals(),看其返回值是true:說明元素重復,不添加是false:就直接添加到集合否:就直接添加到集合最終:自動生成hashCode()和equals()即可LinkedHashMap底層數據結構由鏈表和哈希表組成。由鏈表保證元素有序。由哈希表保證元素唯一。Hashtable底層數據結構是哈希表。線程安全,效率低哈希表依賴兩個方法:hashCode()和equals()執行順序:首先判斷hashCode()值是否相同是:繼續執行equals(),看其返回值是true:說明元素重復,不添加是false:就直接添加到集合否:就直接添加到集合最終:自動生成hashCode()和equals()即可TreeMap底層數據結構是紅黑樹。(是一種自平衡的二叉樹)如何保證元素唯一性呢?根據比較的返回值是否是0來決定如何保證元素的排序呢?兩種方式自然排序(元素具備比較性)讓元素所屬的類實現Comparable接口比較器排序(集合具備比較性)讓集合接收一個Comparator的實現類對象2:到底使用那種集合(自己補齊)看需求。是否是鍵值對象形式:是:Map鍵是否需要排序:是:TreeMap否:HashMap不知道,就使用HashMap。否:Collection元素是否唯一:是:Set元素是否需要排序:是:TreeSet否:HashSet不知道,就使用HashSet否:List要安全嗎:是:Vector(其實我們也不用它,后面我們講解了多線程以后,我在給你回顧用誰)否:ArrayList或者LinkedList增刪多:LinkedList查詢多:ArrayList不知道,就使用ArrayList不知道,就使用ArrayList3:集合的常見方法及遍歷方式Collection:add()remove()contains()iterator()size()遍歷:增強for迭代器|--Listget()遍歷:普通for|--SetMap:put()remove()containskey(),containsValue()keySet()get()value()entrySet()size()遍歷:根據鍵找值根據鍵值對對象分別找鍵和值作業:我講解過的任意一個集合,我要求你存儲什么,你就能夠存儲什么。并且,還要能夠遍歷出來。
4:ArrayList,LinkedList,HashSet,HashMap(掌握)存儲字符串和自定義對象數據并遍歷5:集合的嵌套遍歷(理解)
轉載于:https://www.cnblogs.com/fuck1/p/5322302.html
與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的Java中常见数据结构:list与map的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。