1. 程式人生 > 其它 >Java進階核心之集合框架List

Java進階核心之集合框架List

技術標籤:Java SE連結串列資料結構列表佇列java

Java進階核心之集合框架List

  • 什麼是List資料結構

List接⼝是⼀個有序的 Collection,線性列表接⼝,能夠精確的控制每個元素插⼊的位置,能夠通過索引(類似於陣列的下標)來訪問List中的元素,第⼀個元素的索引為 0,⽽且允許有相同的元素,接⼝儲存⼀組不唯⼀,有序(插⼊順序)的物件。

  • 常見的實現類
    • ArrayList
      • 基於陣列實現,是⼀個動態的陣列佇列,但它和Java中的陣列⼜不⼀樣,它的容量可以⾃動增⻓
      • 可以儲存任意多的物件,但是隻能儲存物件,不能儲存原⽣資料型別例如int
    • LinkedList
      • 基於的資料結構是連結串列,⼀個雙向連結串列,連結串列資料結構的特點是每個元素分配的空間不必連續
      • 插⼊和刪除元素時速度⾮常快,但訪問元素的速度較慢
  • 常見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); } }