深入理解List集合框架

2021-08-19 08:25:16 字數 2181 閱讀 4323

前言:講講什麼是集合框架?集合框架是為表示和操作集合而規定的一種統一的標準的體系結構。任何集合框架都包含三大塊內容:對外的介面、介面的實現和對集合運算的演算法。

沒學集合框架之前我們儲存多個資料是採用陣列實現的,但是我們要建立陣列的話先要初始化陣列容量

int arr =new int[10]; 

現在設定陣列預設容量為10,當我們要向陣列儲存11個資料的話將會丟擲

這個時候我們就要使用集合框架了 list 集合框架介面:

集合框架結構圖

一,list介面

public

inte***ce listextends collection {}

list介面中儲存元素的特點:

list中儲存的元素實現類排序,而且可以重複的儲存相關元素。

(1)arraylist:

優點:操作讀取操作效率高,基於陣列實現的,可以為null值,可以允許重複元素,有序,非同步。

缺點:由於它是由動態陣列實現的,不適合頻繁的對元素的插入和刪除操作,因為每次插入和刪除都需要移動陣列中的元素。

(2)linkedlist:

優點:linkedlist由雙鏈表實現,增刪由於不需要移動底層陣列資料,其底層是鍊錶實現的,只需要修改鍊錶節點指標,對元素的插入和刪除效率較高。

缺點: 遍歷效率較低。hashmap和雙鏈表也有關係。

arraylist成員變數

//

版本號,不用管

private

static

final

long serialversionuid = 8683452581122892189l;

//陣列預設的初始容量

private

static

final

int default_capacity = 10;

//用於建立乙個空的例項

private

static

final object empty_elementdata ={};

//用於儲存list資料的陣列

private

transient

object elementdata;

//陣列大小

private

int size;

linkedlist成員變數:

//

用於記錄集合的數量

transient

int size = 0;

//集合的第一項

transient nodefirst;

//集合的最後一項

transient nodelast;

二,你肯定會想到為什麼linkedlist為什麼刪除和插入效率高和arraylist遍歷效率高

先看看linkedlist底層使用雙鏈表實現:

雙鏈表圖

雙鏈表是鍊錶的一種,它的每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅。所以,從雙向鍊錶中的任意乙個結點開始,都可以很方便地訪問它的前驅結點和後繼結點。一般我們都構造雙向迴圈鍊錶。所以刪除和插入元素只需要修改鍊錶節點指標就可以了,不像arraylist一樣,arraylist底層使用陣列實現的,每一次刪除或修改陣列都會移動元素。

arraylist的底層實現:

arraylist底層由陣列實現,在例項化乙個arraylist時沒給予建構函式陣列個數引數,集合中的陣列預設是10的容量,在呼叫add方法時如果容量已滿,會將陣列的容量擴大1.5倍的容量

三,迴圈遍歷使用for效率高還是foreacn(增強式for迴圈)高?

1,使用for適合迴圈arraylist以及陣列,當大批量的迴圈linkedlist時程式將會卡死,for適合迴圈陣列結構,通過下標去遍歷。

2,使用foreach適合迴圈linkedlist,使用雙鏈表結構實現的應當使用foreach迴圈。

第一次寫部落格不足之處請指正,謝謝

深入理解List集合框架底層原理的實現

前言 此篇文章講解arraylist和linkedlist底層實現原理 for和foreach遍歷集合哪個效率會更高一些!講講什麼是集合框架?集合框架是為表示和操作集合而規定的一種統一的標準的體系結構。任何集合框架都包含三大塊內容 對外的介面 介面的實現和對集合運算的演算法。沒學集合框架之前我們儲存...

深入理解springboot日誌框架

一 springboot預設日誌框架 我們先檢視一下springboot專案的日誌jar包依賴 二 springboot日誌架構的切換 接下來介紹日誌框架的切換,以logback切換成log4j為例,我們看一下springboot官方提供的日誌使用圖 檢視右上角的流程,可以看出,我們面向slf4j ...

list 集合框架

集合框架中提供了乙個內部類專門操作集合中的元素,這個內部類就是迭代器 資料結構 集合框架的由來 資料多了用物件進行儲存,物件多了用集合來進行儲存。而儲存資料的方式 資料結構 各有不同,所以儲存的容器也就有多種,從而形成了集合框架這一體系。集合父類 list介面 集合子類 arraylist vect...