java集合-List
java.util.List
介面是
java.util.Collection
介面的一個子介面。它表示物件的一個有序列表,意味你可以特定的順序訪問元素,也可以通過索引訪問。也可以向一個
List
中多次新增重複的元素。
Java List 視訊教程
如果你更喜歡看視訊而不是文字,下面是一個版本的Java List視訊教程。
List實現
作為一個Collection的子型別,Collection介面的所有方法在List介面裡也適用。
因為
List
是一個介面,為了使用它,你必須例項化一個具體的實現,你可以在下列List的實現中選擇:
java.util.ArrayList
java.util.LinkedList
java.util.Vector
java.util.Stack
在
java.util.concurrent
包中,同樣也有
List
的實現,但是在本教程中,我將不考慮併發程式。
下面是建立
List
例項的一些例子
List listA
=
new
ArrayList
(
)
;
List listB
=
new
LinkedList
(
)
;
List listC
=
new
Vector
(
)
;
List listD
=
new
Stack
(
)
;
新增和讀取元素
向一個
List
中增加元素可以呼叫
add()
方法,這個方法從Collection介面繼承而來,下面是一些例子
List listA
=
new
ArrayList
(
)
;
listA
.
add
(
"element 1"
)
;
listA
.
add
(
"element 2"
)
;
listA
.
add
(
"element 3"
)
;
listA
.
add
(
0
,
"element 0"
)
;
前三個
add()
方法在list的末尾增加一個
String
。最後一個
add()
方法在索引0處增加一個
String
,就是list的開頭。
增加元素到
List
的順序被儲存,所以你可以按照同樣的順序讀取元素。你也可以使用
get(int index)
方法或者通過
iterator()
方法返回的
Iterator
物件來做這件事情。下面是例子
//java學習交流:737251827 進入可領取學習資源及對十年開發經驗大佬提問,免費解答!
List listA
=
new
ArrayList
(
)
;
listA
.
add
(
"element 0"
)
;
listA
.
add
(
"element 1"
)
;
listA
.
add
(
"element 2"
)
;
//access via index
String element0
= listA
.
get
(
0
)
;
String element1
= listA
.
get
(
1
)
;
String element3
= listA
.
get
(
2
)
;
//access via Iterator
Iterator iterator
= listA
.
iterator
(
)
;
while
(iterator
.
hasNext
(
)
{
String element
=
(String
) iterator
.
next
(
)
;
}
//access via new for-loop
for
(Object object
: listA
)
{
String element
=
(String
) object
;
}
當通過
Iterator
或者for迴圈迭代list的時候,元素按照他們被儲存的順序被迭代。
移除元素
你有兩種方式去移除元素
remove(Object element)
remove(int index)
remove(Object element)
移除list中存在的元素。所有後續的元素向前移動,索引因此減少1。
清空一個List
Java
List
介面包含一個
clear()
方法,作用是移除所有的元素。下面是個簡單的例子
List list
=
new
ArrayList
(
)
;
list
.
add
(
"object 1"
)
;
list
.
add
(
"object 2"
)
;
//etc.
list
.
clear
(
)
;
List的大小
你可以獲取
List
中元素的個數通過呼叫
size()
方法,下面是個例子
List list
=
new
ArrayList
(
)
;
list
.
add
(
"object 1"
)
;
list
.
add
(
"object 2"
)
;
int size
= list
.
size
(
)
;
泛型列表
預設你可以放入一個Object到一個
List
中,但是從Java 5起,Java泛型使限制你可以放入一個
List
的型別成為可能,下面是例子
1List<MyObject> list = new ArrayList<MyObject>();
List
現在只有
MyObject
的例項可以插入進去,你可以迭代和讀取它的元素而不用強制轉化它們,就像下面這樣
MyObject myObject
= list
.
get
(
0
)
;
for
(MyObject anObject
: list
)
{
//do someting to anObject...
}
迭代一個列表
迭代一個Java
List
有幾種不同的方式,我將在這裡展示三種最常見的方式。
第一種方式是利用一個
Iterator
,下面是一個例子
List list
=
new
ArrayList
(
)
;
//add elements to list
Iterator iterator
= list
.
iterator
(
)
;
while
(iterator
.
hasNext
(
)
)
{
Object next
= iterator
.
next
(
)
;
}
你可以獲取一個
Iterator
通過呼叫
List
介面的
iterator()
方法。
一旦你獲取了一個
Iterator
,可以不停的呼叫它的
hasNext()
方法直到返回false。
像你看到的,在
while
迴圈中呼叫
hasNext()
方法。
在
while
迴圈中你可以呼叫
next()
方法來獲取
Iterator
指標指向的下一個元素。
下面是例子
List
<String
> mylistStr
=
new
ArrayList
<
>
(
)
;
Iterator
<String
> iterator
= mylistStr
.
iterator
(
)
;
while
(iterator
.
hasNext
(
)
)
{
String obj
= iterator
.
next
(
)
;
}
另外一種迭代的方式是使用Java 5中新增的for迴圈,下面是個例子
List list
=
new
ArrayList
(
)
;
//add elements to list
for
(Object obj
: list
)
{
}
List
中的每個元素都會被執行一個for迴圈,在for迴圈中,每個元素輪流繫結到obj變數上。
如果是一個泛型列表,可以在for迴圈中轉換變數型別,下面是例子
List
<String
> list
=
new
ArrayList
<String
>
(
)
;
//add elements to list
for
(String obj
: list
)
{
}
注意
List
怎麼被限制為
String
,因此你可以在for迴圈中將一個變數設定為
String
。
最後一種迭代列表的方式是使用傳統的for迴圈
view sourceprint?
List list
=
new
ArrayList
(
)
;
//add elements to list
for
(int i
=
0
; i
< list
.
size
(
)
; i
++
)
{
Object obj
= list
.
get
(i
)
;
}
for迴圈建立一個int型別變數並把它初始化為0,當i小於列表長度的時候,一直迴圈。每一次迴圈i將會自增。
在JavaDoc中有更多細節
一個
List
有許多你可以做的事情,但是你必須檢視文件獲取更多的細節。本篇文章重點在兩個普通的操作:增加、移除元素,並且迭代它們。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70010294/viewspace-2843855/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java 集合 ListJava
- Java集合List隨堂Java
- 【java】【集合】List、ListIterator、VectorJava
- Java集合原始碼探究~ListJava原始碼
- Java 的 Collection 與 List 集合Java
- Java程式設計基礎17——集合(List集合)Java程式設計
- Java中List集合效能比較Java
- Java集合(5)之 List 總結Java
- Java集合框架List,Map,Set等Java框架
- 集合框架-List集合框架
- Java中List集合轉Map集合報錯:Duplicate keyJava
- 對Java list集合的新認知Java
- Java List 常用集合 ArrayList、LinkedList、VectorJava
- Java -- 對List集合進行分頁Java
- 集合框架-List集合-2框架
- 集合框架-List集合-3框架
- 【Java】Java容器篇(二),深入理解List集合類Java
- Java 基礎(四)集合原始碼解析 ListJava原始碼
- java集合框架List介面思維導圖Java框架
- Java 中的泛型 集合(List,Set) MapJava泛型
- Java學習--java中的集合框架、Collection介面、list介面Java框架
- Java集合體系總結 Set、List、Map、QueueJava
- 泛型集合 list泛型
- List型別集合型別
- Java集合中List,Set以及Map等集合體系詳解(史上最全)Java
- Java容器 | 基於原始碼分析List集合體系Java原始碼
- Java 中初始化 List 集合的 6 種方式!Java
- Java:List集合&Integer物件&int[]陣列相互轉化Java物件陣列
- Java8 新特性 Stream流操作List集合 (二)Java
- Java集合類: Set、List、Map、Queue使用場景梳理Java
- java 將物件集合轉為欄位值的 listJava物件
- Java執行緒安全的集合類:Map、List、SetJava執行緒
- List集合轉JSONObjectJSONObject
- 集合框架小結-List框架
- Java基礎之去除List集合中的重複元素Java
- 小白學集合之List介面
- 集合框架-List的子類框架
- java基礎學習之九:集合型別Set/List/MapJava型別