一、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