1. 程式人生 > >Java基礎複習筆記--集合知識總結(一)

Java基礎複習筆記--集合知識總結(一)

一、List介面

1.Collection介面是List和Set介面的父類

Collection介面

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新加入的特性

  1. 集合是可以存任意型別的資料,表面上看功能非常強大
  2. 存的時候很方便,取的時候困難重重 從集合中取資料時不知道該轉換為什麼型別,這叫型別安全問題
  3. 解決辦法就是:讓集合可以存任意型別的資料,但是隻能存同一種
  4. 這就叫泛型
  5. 一個集合一旦指定了泛型,那麼該集合就只能存同一種類型的資料,那麼取資料的時候,就不用強轉了
  6. 重要的事說三遍:泛型只支援引用資料型別,基本資料型別要使用它的包裝類!泛型只支援引用資料型別,基本資料型別要使用它的包裝類!泛型只支援引用資料型別,基本資料型別要使用它的包裝類!————因為集合裡面存入的只能是物件!
  7. JDK7以後新增了一個菱形寫法
  8. 泛型的實現原理: 讓資料型別引數化
  9. 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