1. 程式人生 > >java.util.List;與java.awt.List;的區別

java.util.List;與java.awt.List;的區別

java.util.List
public interface List<E>
extends Collection<E>

有序的 collection(也稱為序列)。此介面的使用者可以對列表中每個元素的插入位置進行精確地控制。使用者可以根據元素的整數索引(在列表中的位置)訪問元素,並搜尋列表中的元素。

與 set 不同,列表通常允許重複的元素。更確切地講,列表通常允許滿足 e1.equals(e2) 的元素對 e1 e2,並且如果列表本身允許 null 元素的話,通常它們允許多個 null 元素。難免有人希望通過在使用者嘗試插入重複元素時丟擲執行時異常的方法來禁止重複的列表,但我們希望這種用法越少越好。

List 介面在 iteratoraddremoveequalshashCode 方法的協定上加了一些其他約定,超過了 Collection 介面中指定的約定。為方便起見,這裡也包括了其他繼承方法的宣告。

List 介面提供了 4 種對列表元素進行定位(索引)訪問方法。列表(像 Java 陣列一樣)是基於 0 的。注意,這些操作可能在和某些實現(例如 LinkedList 類)的索引值成比例的時間內執行。因此,如果呼叫者不知道實現,那麼在列表元素上迭代通常優於用索引遍歷列表。

List 介面提供了特殊的迭代器,稱為 ListIterator,除了允許 Iterator 介面提供的正常操作外,該迭代器還允許元素插入和替換,以及雙向訪問。還提供了一個方法來獲取從列表中指定位置開始的列表迭代器。

List 介面提供了兩種搜尋指定物件的方法。從效能的觀點來看,應該小心使用這些方法。在很多實現中,它們將執行高開銷的線性搜尋。

List 介面提供了兩種在列表的任意位置高效插入和移除多個元素的方法。

注意:儘管列表允許把自身作為元素包含在內,但建議要特別小心:在這樣的列表上,equalshashCode 方法不再是定義良好的。

某些列表實現對列表可能包含的元素有限制。例如,某些實現禁止 null 元素,而某些實現則對元素的型別有限制。試圖新增不合格的元素會丟擲未經檢查的異常,通常是 NullPointerExceptionClassCastException。試圖查詢不合格的元素是否存在可能會丟擲異常,也可能簡單地返回 false;某些實現會採用前一種行為,而某些則採用後者。概括地說,試圖對不合格元素執行操作時,如果完成該操作後不會導致在列表中插入不合格的元素,則該操作可能丟擲一個異常,也可能成功,這取決於實現的選擇。此介面的規範中將這樣的異常標記為“可選”。

方法摘要
 boolean add(E e)           向列表的尾部新增指定的元素(可選操作)。
 void add(int index, E element)           在列表的指定位置插入指定元素(可選操作)。
 boolean           新增指定 collection 中的所有元素到此列表的結尾,順序是指定 collection 的迭代器返回這些元素的順序(可選操作)。
 boolean           將指定 collection 中的所有元素都插入到列表中的指定位置(可選操作)。
 void clear()           從列表中移除所有元素(可選操作)。
 boolean           如果列表包含指定的元素,則返回 true
 boolean           如果列表包含指定 collection 的所有元素,則返回 true
 boolean           比較指定的物件與列表是否相等。
 E get(int index)           返回列表中指定位置的元素。
 int           返回列表的雜湊碼值。
 int           返回此列表中第一次出現的指定元素的索引;如果此列表不包含該元素,則返回 -1。
 boolean           如果列表不包含元素,則返回 true
          返回按適當順序在列表的元素上進行迭代的迭代器。
 int           返回此列表中最後出現的指定元素的索引;如果列表不包含此元素,則返回 -1。
          返回列表中元素的列表迭代器(按適當順序),從列表的指定位置開始。
 E (int index)           移除列表中指定位置的元素(可選操作)。
 boolean           從此列表中移除第一次出現的指定元素(如果存在)(可選操作)。
 boolean           從列表中移除指定 collection 中包含的其所有元素(可選操作)。
 boolean           僅在列表中保留指定 collection 中所包含的元素(可選操作)。
 E set(int index, E element)           用指定元素替換列表中指定位置的元素(可選操作)。
 int size()           返回列表中的元素數。
 List<E> (int fromIndex, int toIndex)           返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之間的部分檢視。
          返回按適當順序包含列表中的所有元素的陣列(從第一個元素到最後一個元素)。
<T> T[]
          返回按適當順序(從第一個元素到最後一個元素)包含列表中所有元素的陣列;返回陣列的執行時型別是指定陣列的執行時型別。

java.awt.List

public class List

List 元件為使用者提供了一個可滾動的文字項列表。可設定此 list,使其允許使用者進行單項或多項選擇。

例如以下程式碼:

 List lst = new List(4, false);
 lst.add("Mercury");
 lst.add("Venus");
 lst.add("Earth");
 lst.add("JavaSoft");
 lst.add("Mars");
 lst.add("Jupiter");
 lst.add("Saturn");
 lst.add("Uranus");
 lst.add("Neptune");
 lst.add("Pluto");
 cnt.add(lst);
 

cnt 為容器時,將生成以下滾動列表:

顯示一個包含這些項的列表:Venus、Earth、JavaSoft 和 Mars。Javasoft 為選中狀態。

如果 List 允許進行多項選擇,則單擊已選中的項時,將取消選中該項。在上面的示例中,一次只能從滾動列表中選擇一項,因為建立新的滾動列表時,第二個引數為 false。如果 List 不允許進行多項選擇,則選擇某一項會導致其他選中的項取消選中。

注意,本示例中顯示的列表是用四個可視行建立的。建立該列表之後,不可更改可視行的數量。預設的 List 是用四行建立的,所以 lst = new List()list = new List(4, false) 等效。

從 Java 1.1 開始,AWT(Abstract Window Toolkit,抽象視窗工具包)會把列表上發生的所有滑鼠、鍵盤和焦點事件傳送給 List 物件。(維護舊的 AWT 事件模型的目的是為了向後相容,不推薦使用它。)

當用戶選中或取消選中某項時,AWT 將向列表傳送一個 ItemEvent 例項。當用戶雙擊滾動列表中的某一項時,AWT 會在緊隨項事件後向列表傳送一個 ActionEvent 例項。當用戶選中列表中的某項,按下 return 鍵時,AWT 也會生成一個動作事件。

如果應用程式需要基於此列表中使用者選中或啟用的項執行某個動作,則應該相應地實現 ItemListenerActionListener,並註冊新的偵聽器,以便在此列表中接收事件。

對於多項選擇滾動列表,使用外部動作(如單擊按鈕)來觸發動作被認為是一種更好的使用者介面。

構造方法摘要
List()
          建立新的滾動列表。
List(int rows)
          建立一個用指定可視行數初始化的新滾動列表。
List(int rows, boolean multipleMode)
          建立一個初始化為顯示指定行數的新滾動列表。