首页 > 应用开发 > Java > Java集合-List
java.util.List接口是
java.util.Collection 接口的一个子接口。它表示对象的一个有序列表,意味你可以特定的顺序访问元素,也可以通过索引访问。也可以向一个
List中多次添加重复的元素。
Java List 视频教程
如果你更喜欢看视频而不是文本,下面是一个版本的Java List视频教程。
https://youtu.be/d3QbptJRln4
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博客 ” ,链接:https://blog.itpub.net/70010294/viewspace-2843855/ ,如需转载,请注明出处,否则将追究法律责任。