Java基礎複習筆記--集合知識總結(一)
阿新 • • 發佈:2018-12-12
一、List介面
1.Collection介面是List和Set介面的父類
2.List 介面儲存一組允許重複,有序(插入順序)的物件,有下標,插入順序作為遍歷的順序
3.Set 介面儲存一組唯一,無序的物件 沒下標 插入的順序跟遍歷的順序是不一樣的
4.List介面中的功能方法 List 介面儲存一組允許重複,有序(插入順序)的物件(包括null),可以通過索引(下標)來進行訪問
作用 | 方法名 |
---|---|
儲存(新增) | |
boolean add(Object o) 繼承自Collection | |
void add (int index,Object o) 加塞專用(有點類似於插隊) | |
替換 | |
com.afinalstone.set(int index,Object o) | |
刪除 | |
remove(Object o) 繼承自Collection | |
remove(int index) | |
void clear() 繼承自Collection | |
判斷 | |
boolean contains(Object o) 繼承自Collection,內部呼叫indexof實現 | |
boolean isEmpty() 繼承自Collection | |
int indexOf(Object o) | |
int lastIndexOf(Object o) | |
獲取 | |
int size() 繼承自Collection | |
Object get(int index) | |
Object[] toArray() 繼承自Collection |
二:List介面的三個常用實現類
類名 | 底層資料結構 | 執行緒是否安全 | 效率 | 增量值 |
---|---|---|---|---|
Vector(注:已基本不再使用) | 動態的陣列結構 | 執行緒安全 | 無論增刪還是查詢都非常慢 | 預設初始容量為10,增量為10 |
ArrayList | 動態的陣列結構 | 執行緒不安全 | 增刪的效率很慢(因為要移動資料),但是隨機查詢的效率很高。 | 預設初始容量為10,增量未指定(經除錯發現:原容量的50%) |
LinkedList | 連結串列資料結構 | 執行緒不安全 | ,對元素的增刪的操作效率很高,隨機查詢的效率低(因為要移動指標定址) | 預設初始容量為0,增量不明確 |
三、泛型 泛型即(Generic type),是Java 5新加入的特性
- 集合是可以存任意型別的資料,表面上看功能非常強大
- 存的時候很方便,取的時候困難重重 從集合中取資料時不知道該轉換為什麼型別,這叫型別安全問題
- 解決辦法就是:讓集合可以存任意型別的資料,但是隻能存同一種
- 這就叫泛型
- 一個集合一旦指定了泛型,那麼該集合就只能存同一種類型的資料,那麼取資料的時候,就不用強轉了
- 重要的事說三遍:泛型只支援引用資料型別,基本資料型別要使用它的包裝類!泛型只支援引用資料型別,基本資料型別要使用它的包裝類!泛型只支援引用資料型別,基本資料型別要使用它的包裝類!————因為集合裡面存入的只能是物件!
- JDK7以後新增了一個菱形寫法
- 泛型的實現原理: 讓資料型別引數化
- Java中實現的泛型是偽泛型 ,就是JVM是不支援泛型的,只是在編譯的時候檢查一下型別是否一致,編譯通過會把 位元組碼中的泛型程式碼全部刪掉(型別擦除)
linkedlist的意義
我們知道 ArrayList 是以陣列實現的,遍歷時很快,但是插入、刪除時都需要移動後面的元素,效率略差些。而LinkedList 是以連結串列實現的,插入、刪除時只需要改變前後兩個節點指標指向即可,省事不少。
LinkedList的定義
LinkedList 是連結串列實現的線性表(雙鏈表)。
雙鏈表中的結點結構圖
LinkedList 特點
- 雙向連結串列實現
- 元素時有序的,輸出順序與輸入順序一致
- 允許元素為 null
- 要找到某個結點,必須從頭開始遍歷。(查詢慢,增刪快)
- 和 ArrayList 一樣,不是同步容器
方法
其餘方法與arraylist一樣,只不過linkedlist多了6個連結串列相關的方法
由於linkedlist不是同步的,所以,想要執行緒安全的時候,需要直接在初始化時用 Collections.synchronizedList 方法進行包裝:
感謝大佬
https://blog.csdn.net/u011240877/article/details/52876543
https://blog.csdn.net/qq_34149805/article/details/68943004
https://blog.csdn.net/qq_36711757/article/details/80411721
https://blog.csdn.net/abc6368765/article/details/77509169