List 介面是 Collection 介面的子介面。List 中元素有序,是按照元素的插入順序進行排序的。每個元素都有一個與之關聯的整數型索引(索引從 0 開始),可以根據索引來訪問和操作元素,可以使用普通 for 迴圈遍歷。List 中可以包含重覆的元素。 ...
List 介面基本介紹
List
介面是Collection
介面的子介面,其主要特點如下:
List
中元素有序,是按照元素的插入順序進行排序的。每個元素都有一個與之關聯的整數型索引(索引從 0 開始),可以根據索引來訪問和操作元素,可以使用普通 for 迴圈遍歷。List
中可以包含重覆的元素。
public class ListTest() {
public static void main(String[] args) {
// List 中元素有序、且可重覆
List list = new ArrayList();
list.add("Jack");
list.add("Rose");
list.add("May");
list.add("Luck");
list.add("Jack");
System.out.println("list = " + list); // list = [Jack, Rose, May, Luck, Jack]
// List 支持索引
System.out.println(list.get(2)); // May
}
}
List 介面常用方法
下麵的代碼以其實現類ArrayList
演示List
介面的常用方法。
public class ListMethod() {
public static void main(String[] args) {
List list = new ArrayList();
// 添加指定元素到列表末尾
list.add("任盈盈");
list.add("趙敏");
System.out.println("list = " + list); // list = [任盈盈, 趙敏]
// void add(int index, E element)
// 在此列表的指定位置插入指定的元素。
// 將當前位於該位置的元素(如果有)以及後續的元素向右移動(索引加一)。
list.add(1, "周芷若");
System.out.println("list = " + list); // list = [任盈盈, 周芷若, 趙敏]
// boolean addAll(int index, Collection<? extends E> c)
// 將指定集合中的所有元素按指定位置插入到此列表中。
// 將當前位於該位置的元素(如果有)以及後續的元素向右移動(索引增加)。
// 新元素將按照指定集合迭代器返回它們的順序出現在此列表中。
List list1 = new ArrayList();
list1.add("風清揚");
list1.add("任我行");
list.addAll(2, list1);
System.out.println("list = " + list); // list = [任盈盈, 周芷若, 風清揚, 任我行, 趙敏]
// E get(int index):返回此列表中指定位置的元素。
System.out.println(list.get(1)); // 周芷若
list.add("風清揚");
System.out.println("list = " + list); // list = [任盈盈, 周芷若, 風清揚, 任我行, 趙敏, 風清揚]
// int indexOf(Object o)
// 返回此列表中指定元素第一次出現的索引,如果列表不包含該元素,則返回 -1。
System.out.println(list.indexOf("風清揚")); // 2
// int lastIndexOf(Object o)
// 返回此列表中指定元素最後一次出現的索引,如果列表不包含該元素,則返回 -1。
System.out.println(list.lastIndexOf("風清揚"));// 5
// E remove(int index):移除此列表中指定位置的元素。
// 將任何後續的元素向左移動(其索引減一)。返回從列表中移除的元素。
list.remove(0);
System.out.println("list = " + list); // list = [周芷若, 風清揚, 任我行, 趙敏, 風清揚]
// boolean remove(Object o):從列表中移除指定元素的第一個匹配項(如果存在)。
// 如果列表不包含該元素,則列表保持不變。如果列表發生更改,則返回 true。
list.remove("風清揚");
System.out.println("list = " + list); // list = [周芷若, 任我行, 趙敏, 風清揚]
//E set(int index, E element):用指定元素替換列表中指定位置的元素。
list.set(1, "張無忌");
System.out.println("list = " + list); // list = [周芷若, 張無忌, 趙敏, 風清揚]
// List<E> subList(int fromIndex, int toIndex)
// 返回此列表中從 fromIndex(包括)到 toIndex(不包括)的子集合。
// 如果 fromIndex 和 toIndex 相等,則返回的列表為空。
List list2 = list.subList(1, 3);
System.out.println("list2 = " + list2); // list2 = [張無忌, 趙敏]
// 該方法消除了顯式的範圍操作的需求(這種操作通常用於數組)。
// 需要對列表的一部分進行的操作都可以通過傳遞子列表視圖而不是把整個列表作為範圍,
// 類似的習慣用法也可以用於 indexOf 和 lastIndexOf 方法。
// 例如,以下習慣用法從列表中移除了一系列元素:
System.out.println("list = " + list); // 輸出:list = [周芷若, 張無忌, 趙敏, 風清揚]
list.subList(1, 3).clear();
System.out.println("list = " + list);// 輸出:list = [周芷若, 風清揚]
}
}
List 介面遍歷元素方式
List
介面可以使用 Iterator(迭代器)、增強 for 迴圈和普通 for 迴圈三種方式來遍歷元素,下麵的代碼以其實現類Vector
演示List
介面遍歷元素的方式。
public class ThroughElements() {
public static void main(String[] args) {
List list = new Vector();
list.add("蛋撻");
list.add("芝士蛋糕");
list.add("提拉米蘇");
System.out.println("---使用 Iterator---");
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Object o = iterator.next();
System.out.println(o);
}
System.out.println("---使用增強 for 迴圈---");
for (Object o : list) {
System.out.println(o);
}
System.out.println("---使用普通 for 迴圈---");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}