一般定義
一覽表; 明細表; 目錄; 名[清、價目]單
領域定義
在程式語言中List 是標準類庫中的一個類,可以簡單視之為雙向鍊表,以線性列的方式管理物件集合。list 的特色是在集合的任何位置增加或刪除元素都很快,但是不支持隨機存取。list 是類庫提供的眾多容器(container)之一,除此之外還有vector、set、map、…等等。list 以模板方式實現(即泛型),可以處理任意型別的變數,包括使用者自定義的資料型態例如:它可以是一個放置整數(int)型態的 list、也可以是放置字串(char 或 string)型態的 list、或者放置使用者自定類別(user-defined class)的 list。
有序的
collection(也稱為序列)。此
接口的用戶可以對列表中每個元素的插入位置進行精確地控制。用戶可以根據元素的整數
索引(在列表中的位置)訪問元素,並搜尋列表中的元素。
與vector的區別
參考list是雙向循環鍊表,,每一個元素都知道前面一個元素和後面一個元素。在STL中,list和vector一樣,是兩個常被使用的容器。和vector不一樣的是,list不支持對元素的任意存取。list中提供的成員函式與vector類似,不過list提供對表首元素的操作push_front、pop_front,這是vector不具備的。和vector另一點不同的是,list的疊代器不會存在失效的情況,他不像vector會保留備份空間,在超過容量額度時重新全部分配記憶體,導致疊代器失效;list沒有備份空間的概念,出入一個元素就申請一個元素的空間,所以它的疊代器不會失效。
提取數組
list()函式與array()類似,只是它可以在一次操作中從一個數組內提取多個值,同時為多個變數賦值。其形式如下:
從資料庫或檔案中提取信息時,這種構造尤其有用。例如,假如你希望格式化並輸出從一個文本,檔案中讀取信息。檔案的每一行都包含用戶信息,如姓名、職業和喜愛的顏色,每一項用豎線分隔。典型的一行如下所示:
Nino Sanzi|profesional golfer|green
可以通過一個簡單的循環使用list()來讀取每一行,將各部分數據賦給變數,按照需要格式化並輸出數據。
領域簡介
與 set 不同,列表通常允許重複的元素。更確切地講,列表通常允許滿足 e1.
equals(e2) 的元素對 e1 和 e2,並且如果列表本身允許
null 元素的話,通常它們允許多個 null 元素。難免有人希望通過在用戶嘗試插入重複元素時拋出運行時異常的方法來禁止重複的列表,但我們希望這種用法越少越好。
List
接口在
iterator、add、
remove、equals 和 hashCode 方法的協定上加了一些其他約定,超過了 Collection 接口中指定的約定。為方便起見,這裡也包括了其他繼承方法的聲明。
List 接口提供了 4 種對列表元素進行定位(
索引)訪問方法。列表(像 Java
數組一樣)是基於 0 的。注意,這些操作可能在和某些實現(例如 LinkedList 類)的索引值成比例的時間內執行。因此,如果調用者不知道實現,那么在列表元素上疊代通常優於用索引遍歷列表。
List 接口提供了特殊的
疊代器,稱為
ListIterator,除了允許 Iterator 接口提供的正常操作外,該疊代器還允許元素插入和替換,以及雙向訪問。還提供了一個方法來獲取從列表中指定位置開始的列表疊代器。
List
接口提供了兩種搜尋指定對象的方法。從性能的觀點來看,應該小心使用這些方法。在很多實現中,它們將執行高開銷的線性搜尋。
List 接口提供了兩種在列表的任意位置高效插入和移除多個元素的方法。
注意事項
儘管列表允許把自身作為元素包含在內,但建議要特別小心:在這樣的列表上,equals 和 hashCode 方法不再是定義良好的。
某些列表實現對列表可能包含的元素有限制。例如,某些實現禁止 null 元素,而某些實現則對元素的類型有限制。試圖添加不合格的元素會拋出未經檢查的異常,通常是 NullPointerException 或 ClassCastException。試圖查詢不合格的元素是否存在可能會
拋出異常,也可能簡單地返回 false;某些實現會採用前一種行為,而某些則採用後者。概括地說,試圖對不合格元素執行操作時,如果完成該操作後不會導致在列表中插入不合格的元素,則該操作可能拋出一個異常,也可能成功,這取決於實現的選擇。此
接口的規範中將這樣的異常標記為“可選”。
常用函式
向列表的尾部添加指定的元素(可選操作)。
voidadd(intindex,Eelement)
在列表的指定位置插入指定元素(可選操作)。
booleanaddAll(Collection<?extendsE>c)
添加指定
collection 中的所有元素到此列表的結尾,順序是指定 collection 的
疊代器返回這些元素的順序(可選操作)。
booleanaddAll(intindex,Collection<?extendsE>c)
將指定 collection 中的所有元素都插入到列表中的指定位置(可選操作)。
從列表中移除所有元素(可選操作)。
如果列表包含指定的元素,則返回 true。
booleancontainsAll(Collection<?>c)
比較指定的對象與列表是否相等。
返回列表中指定位置的元素。
返回此列表中第一次出現的指定元素的
索引;如果此列表不包含該元素,則返回 -1。
如果列表不包含元素,則返回 true。
返回此列表中最後出現的指定元素的
索引;如果列表不包含此元素,則返回 -1。
ListIterator<E>listIterator()
返回此列表元素的列表疊代器(按適當順序)。
ListIterator<E>listIterator(intindex)
返回列表中元素的列表疊代器(按適當順序),從列表的指定位置開始。
移除列表中指定位置的元素(可選操作)。
從此列表中移除第一次出現的指定元素(如果存在)(可選操作)。
booleanremoveAll(Collection<?>c)
booleanretainAll(Collection<?>c)
僅在列表中保留指定 collection 中所包含的元素(可選操作)。
用指定元素替換列表中指定位置的元素(可選操作)。
返回列表中的元素數。
List<E>subList(intfromIndex,inttoIndex)
返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之間的部分視圖。
返回按適當順序包含列表中的所有元素的
數組(從第一個元素到最後一個元素)。
返回按適當順序(從第一個元素到最後一個元素)包含列表中所有元素的數組;返回數組的運行時類型是指定數組的運行時類型。
List控制項
List控制項在各類程式中,具有數據顯示直觀,操作方便的特點。所以使用率極高。
FarPoint的List Pro包含最強大的列表框和組合框的開發組件。這些極其強大的控制項允許你顯示多達20億列表項,多行顯示單個記錄,為便於查看合併單元格文本,搜尋指定的列表項,或使用無限制的鍵值來進行列表項排序。List Pro具有200多個的屬性,可用來進一步自定義控制項的外觀。總之,這些特性可讓List Pro成為最終的數據查看器(Data Viewer)。