集合思維導圖:
集合比較方面問題:
ArrayList和LinkedList的區別:
1、結構:
ArrayList是數組結構
LinkedList是鏈表結構
2、優缺點
ArrayList:
**優點:查詢速度快
**缺點:增刪改的速度慢
LinkedList:
**優點:查詢速度慢,不適合做查詢
**缺點:增刪改的速度快
Array和ArrayList的區別:
1、存儲的數據類型
Array是數組
ArrayList是集合
2、長度
Array是固定數組,長度不可變
ArrayList是動態數組被稱爲“集合”,長度可變
3、ArrayList是Array的複雜版本
HashSet、TreeSet、LinkedHashSet的區別:
1、需要速度快的集合,用HashSet
2、需要集合排序功能,用TerrSet
3、需要插入順序進行排序,用LinkedHashSet
HashSet有以下特點:
不能保證元素的排列順序,順序有可能發生變化
不是同步的
集合元素可以是null,但只能放入一個null
LinkedHashSet:
LinkedHashSet集合同樣是根據元素的hashCode值來決定元素的存儲位置,但是它同時使用鏈表維護元素的次序
LinkedHashSet在迭代訪問Set中的全部元素時,性能比HashSet好,但是插入時性能稍微遜色於HashSet
HashMap、TreeMap、LinkedHashMap的區別:
1、在Map集合中插入、刪除和定位元素用HashMap
2、需要集合排序,用TreeMap
3、插入順序進行排序,用LinkedHashMap
共同點:
HashMap、LinkedHashMap、TreeMap都屬於Map
不同點:
1、HashMap裏面存入的鍵值對在取出的時候是隨機的,也是我們最常用的一個Map.它根據鍵的HashCode值存儲數據,根據鍵可以直接獲取它的值,具有很快的訪問速度。在Map 中插入、刪除和定位元素,HashMap 是最好的選擇。
2、TreeMap取出來的是排序後的鍵值對。要按自然順序或自定義順序遍歷鍵,那麼TreeMap會更好。
3、 LinkedHashMap 是HashMap的一個子類,如果需要輸出的順序和輸入的相同,那麼用LinkedHashMap可以實現. (應用場景:購物車等需要順序的)
HashMap和HashSet的區別:
HashMap | HashSet |
---|---|
實現了Map接口 | 實現了Set接口 |
存儲鍵值對 | 存儲對象 |
調用put()增加元素 | 調用add()增加元素 |
調用put()增加元素 | 調用add()增加元素 |
使用key計算hashcode | 使用成員對象計算hashcode |
HashMap相對於HashSet比較快 | HashSet相對於HashMap比較慢 |
List、Set、Map的區別:
List、Set是繼承collection,Map不是繼承collection
List | Set | Map |
---|---|---|
允許有重複的元素 | 不允許有重複的元素 | 不允許有重複的Key(鍵),但是可以有重複的值 |
可以插入多個null元素 | 只可以插入一個null元素 | Key(鍵)只能插入一個null元素,但是值可以插入多個null元素 |
有序容器,插入的順序和輸出的順序一樣 | 無序容器 | 無序容器 |
將一個數組轉成List
數組轉List,可以使用Arrays.asList
List轉數組,使用list.toArray