List集合
LIst 集合包括 List 接口以及 List 接口的所有實作類。List** 集合中的元素允許重複,各元素的順序就是對象插入的順序。類似 Java 數組,使用者可以通過使用索引(元素在集合中的位置)來通路集合中的元素。
List接口
List 接口繼承了 Collction 接口,是以包含 Collection 中的所有方法。此外,List 接口中還定義了以下兩個重要的方法:
- get(int index):獲得指定索引位置的元素
- set(int index, Object obj):将集合中指定索引位置的對象修改為指定的對象
List接口的實作類
LIst 接口的常用實作類有 ArrayList 與 LinkedList
- ArrayList 類實作了可變的數組,允許儲存所有元素,包括 null ,并可以根據索引的位置對集合進行快速的随機通路;缺點是向指定的索引位置插入對象或删除對象的速度較慢。
- LinkedList 類采用連結清單結構儲存對象。這種結構的優點是便于向集合中插入和删除對象,需要向集合中插入、删除對象時,使用 LinkedList 類實作的 List 集合的效率較高;但對于随機通路集合中的對象,使用 LInkedList 類實作 List 集合的效率較低。
使用 List 集合時通常聲明為 List 類型,可通過不同的實作類來執行個體化集合
【例】通過 ArrayList、LinkedList 類執行個體化 List 集合,代碼如下:
List<E> list = new ArrayList<>();
LIst<E> list2 = new LinkedList<>();
在上面的代碼中,E 可以是合法的 Java 資料類型。例如,如果集合中的元素為字元串類型,那麼 E 可以修改為 String。
【例】在主方法中建立集合對象,通過 Math 類的 random () 方法随機擷取集合中的某個元素,然後移除索引位置為 “0” 的元素,最後周遊數組。
import java.util.ArrayList;
import java.util.List;
public class LIstTest {
public static void main(String[] args) {
List<String> list = new ArrayList();
//存儲任意資料類型值
list.add("12");//添加元素
list.add("hello");
list.add("12");//允許重複添加元素
System.out.println("元素個數:" + list.size());
int i = (int) (Math.random()*list.size);//擷取随機數
System.out.println("擷取随機位置的值:" + list.get(i));//擷取随機位置的值
//移除元素
System.out.println("移除第一個元素:" + list.remove(0));
System.out.println("元素個數:" + list.size());
for (int i = 0; i < list.size(); i++)
System.out.println(list.get(i));//擷取指定位置的值
System.out.println("移除字元串hello:" + list.remove("hello"));//移除指定的值,移除清單第一處的值,傳回boolean
System.out.println("元素個數:" + list.size());
list.clear();//清除清單
System.out.println("元素個數:" + list.size());
}
}
運作結果如圖:
說明:與數組相同,集合的索引也是從 0 開始。