arrayList與linkedList

arrayList

優點
1。支持自動改變大小的功能
2。可以靈活的插入元素
3 可以靈活的刪除元素

集合中存放的依然是對象的引用而不是對象本身。

在Java中實例化數組

** 聲明Java數組變量時,只聲明數組本身的變量(引用
聲明實際上並不創建數組。**

int [] array;

array = new int [10];

這樣爲創建一個類型數組, int其中包含10個 int變量的空間。

之前的Java數組示例創建了 int一個原始數據類型的數組。

創建一個對象引用數組。例如:

'String [] stringArray = new String [10];'

Java允許創建對任何類型對象(對任何類的實例)的引用數組。

ArrayList 底層採用數組實現,當使用不帶參數的構造方法生成 ArrayList 對象 時,實際上會在底層生成一個長度爲 10 的 Object 類型數組

如果增加的元素個數超過了 10 個,那麼 ArrayList 底層會新生成一個數組,長 度爲原數組的 1.5 倍+1,然後將原數組的內容複製到新數組當中,並且後續 增加的內容都會放到新數組當中。當新數組無法容納增加的元素時,重複該 過程。

**

常見的方法

**

JAVA.util.ArrayList

E表示泛型 ArrayList是一個泛型類、

JAVA.util.ArrayList的一些方法:

+rrayList() 構造函數 創建一個空的列表 size爲0

+add(o:E):void 在list的末尾加上一個元素o

== +add(index:int,o:E):void== 在指定的地方插入一個元素

+clear():void 從list刪除所有 的元素

==+remove(index;int ):boolean == 去除指定的index的元素 返回true

+remove(o:object):boolean 刪除list第一次元素o 返回true

+size():int 返回list中的元素個數

==+get(index :int ):E == 返回指定index 的元素、

== +contains(o: Object): boolean == 如果 list 含有元素o 返回 true

**創建 ArrayList list = new ArrayList<>()

訪問`list.get(index)

更新

list.set(index,"HuLi")

返回大小list.size()
排序java.util.Collections.sort(arrsylist)

添加元素list.add("HULI")

插入一個元素list.add(index,"HULI")

刪除一個元素list.remove(index)**

linkedList

1)
LinkedList 底層採用雙向鏈表實現

它包含一個非常重要的內部類:Entry。Entry是雙向鏈表節點所對應的數據結構,包括的屬性有:
當前節點所包含的值,上一個節點,下一個節點。
(02)
從LinkedList的實現方式中可以發現,它不存在LinkedList容量不足的問題。
(03) LinkedList的克隆函數,即是將全部元素克隆到一個新的LinkedList對象中。
(04) LinkedList實現java.io.Serializable。當寫入到輸出流時,先寫入“容量”,再依次寫入“每一個節點保護的值”;當讀出輸入流時,先讀取“容量”,再依次讀取“每一個元素”。

方法

**

add(E e):在鏈表後添加一個元素;   
addFirst(E e):在鏈表頭部插入一個元素;
addLast(E e):在鏈表尾部添加一個元素;  
push(E e):與addFirst方法一致*
remove() :移除鏈表中第一個元素;    
remove(E e):移除指定元素;   
removeFirst(E e):刪除頭,獲取元素並刪除;  
removeLast(E e):刪除尾;  
pollFirst():刪除頭;
pollLast():刪除尾;
pop():和removeFirst方法一致 
get(int index):按照下標獲取元素;  
getFirst():獲取第一個元素;  
getLast():獲取最後一個元素; 
peek():獲取第一個元素,但是不移除;  
peekFirst():獲取第一個元素,但是不移除; 
peekLast():獲取最後一個元素;
pollFirst():查詢並刪除頭;  
pollLast():刪除尾;  

arrayList 與linkedList 的一些區別

== 一個是Array(動態數組)的數據結構,一個是Link(鏈表)的數據結構,此外,它們兩個都是對List接口的實現。 ==

前者是數組隊列,相當於動態數組;後者爲雙向鏈表結構,也可當作堆棧、隊列、雙端隊列

**a) ArrayList 底層採用數組實現,LinkedList 底層採用雙向鏈表實現。

b) 當執行插入或者刪除操作時,採用 LinkedList 比較好。

,因爲ArrayList是數組,所以在其中進行增刪操作時,會對操作點之後所有數據的下標索引造成影響,需要進行數據的移動。

c) 當執行搜索操作時,採用 ArrayList 比較好 **
(因爲LinkedList是線性的數據存儲方式,所以需要移動指針從前往後依次查找。)

d)從效率來看,ArrayList自由性較低,因爲它需要手動的設置固定大小的容量,但是它的使用比較方便,只需要創建,然後添加數據,通過調用下標進行使用;而LinkedList自由性較高,能夠動態的隨數據量的變化而變化,但是它不便於使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章