Java進階核心之集合框架List
阿新 • • 發佈:2021-02-03
Java進階核心之集合框架List
- 什麼是List資料結構
List接⼝是⼀個有序的 Collection,線性列表接⼝,能夠精確的控制每個元素插⼊的位置,能夠通過索引(類似於陣列的下標)來訪問List中的元素,第⼀個元素的索引為 0,⽽且允許有相同的元素,接⼝儲存⼀組不唯⼀,有序(插⼊順序)的物件。
- 常見的實現類
- ArrayList
- 基於陣列實現,是⼀個動態的陣列佇列,但它和Java中的陣列⼜不⼀樣,它的容量可以⾃動增⻓
- 可以儲存任意多的物件,但是隻能儲存物件,不能儲存原⽣資料型別例如int
- LinkedList
- 基於的資料結構是連結串列,⼀個雙向連結串列,連結串列資料結構的特點是每個元素分配的空間不必連續
- 插⼊和刪除元素時速度⾮常快,但訪問元素的速度較慢
- ArrayList
- 常見List API語法
//建立物件,LinkedList和ArrayList api⼀樣
List<String> list = new ArrayList<>();
//往容器⾥⾯新增物件
list.add("jack");
//根據索引獲取元素
list.get(index);
//更新⼀個元素
list.set(index, “⼩滴課堂”);
//返回⼤⼩
list.size();
//根據索引刪除⼀個元素
list.remove(index);
//根據物件刪除元素
list.remove("jack" );
//清空元素
list.clear();
//是否為空
list.isEmpty();
//LinkedList特有api
//獲取第⼀個元素
list.getFirst();
//獲取最後⼀個元素
list.getLast();
- 兩者常見區別 (經典⾯試題)
- 兩個都是List的接⼝,兩個都是⾮執行緒安全的
- ArrayList是基於動態陣列的資料結構,⽽LinkedList是基於連結串列的資料結構
- 對於隨機訪問get和set(查詢操作),ArrayList要優於LinkedList,因為LinkedList要移動指
針 - 對於增刪操作(add和remove),LinkedList優於ArrayList。
package domee.chapter8;
import java.util.ArrayList;
import java.util.LinkedList;
public class ListTest {
public static void main(String[] args) {
ArrayList<String> stringArrayList = new ArrayList<>();
LinkedList<String> stringLinkedList = new LinkedList<>();
stringArrayList.add("哈哈");
stringArrayList.add("哼哼");
stringArrayList.add("嘿嘿");
int size = stringArrayList.size();
System.out.println(size);
System.out.println(stringArrayList);
System.out.println(stringArrayList.get(1));
stringArrayList.set(2,"嗨嗨");
System.out.println(stringArrayList);
System.out.println(stringArrayList.get(1));
int size2 = stringArrayList.size();
System.out.println(size2);
stringArrayList.remove(2);
System.out.println(stringArrayList);
int size4 = stringArrayList.size();
System.out.println(size4);
stringArrayList.clear();
int size3 = stringArrayList.size();
System.out.println(size3);
System.out.println(stringArrayList);
boolean isEmpty = stringArrayList.isEmpty();
System.out.println(isEmpty);
}
}