Java中常見數據結構:list與map

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:集合的嵌套遍歷(理解)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章