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自由性較高,能夠動態的隨數據量的變化而變化,但是它不便於使用。