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
中增加元素可以调用 add()
方法,这个方法从Collection接口继承而来,下面是一些例子
前三个 add()
方法在list的末尾增加一个String
。最后一个 add()
方法在索引0处增加一个String
,就是list的开头。
增加元素到List
的顺序被储存,所以你可以按照同样的顺序读取元素。你也可以使用get(int index)
方法或者通过iterator()
方法返回的Iterator
对象来做这件事情。下面是例子
当通过Iterator
或者for循环迭代list的时候,元素按照他们被存储的顺序被迭代。
移除元素
你有两种方式去移除元素
remove(Object element)
remove(int index)
remove(Object element)
移除list中存在的元素。所有后续的元素向前移动,索引因此减少1。
清空一个List
Java List
接口包含一个clear()
方法,作用是移除所有的元素。下面是个简单的例子
List的大小
你可以获取List
中元素的个数通过调用size()
方法,下面是个例子
泛型列表
默认你可以放入一个Object到一个List
中,但是从Java 5起,Java泛型使限制你可以放入一个List
的类型成为可能,下面是例子
List
现在只有MyObject
的实例可以插入进去,你可以迭代和读取它的元素而不用强制转化它们,就像下面这样
迭代一个列表
迭代一个Java List
有几种不同的方式,我将在这里展示三种最常见的方式。
第一种方式是利用一个Iterator
,下面是一个例子
你可以获取一个Iterator
通过调用List
接口的iterator()
方法。
一旦你获取了一个Iterator
,可以不停的调用它的 hasNext()
方法直到返回false。
像你看到的,在while
循环中调用hasNext()
方法。
在while
循环中你可以调用next()
方法来获取Iterator
指针指向的下一个元素。
下面是例子
另外一种迭代的方式是使用Java 5中新增的for循环,下面是个例子
List
中的每个元素都会被执行一个for循环,在for循环中,每个元素轮流绑定到obj变量上。
如果是一个泛型列表,可以在for循环中转换变量类型,下面是例子
注意List
怎么被限制为String
,因此你可以在for循环中将一个变量设置为String
。
最后一种迭代列表的方式是使用传统的for循环
view sourceprint?
for循环创建一个int类型变量并把它初始化为0,当i小于列表长度的时候,一直循环。每一次循环i将会自增。
在JavaDoc中有更多细节
一个List
有许多你可以做的事情,但是你必须查看文档获取更多的细节。本篇文章重点在两个普通的操作:增加、移除元素,并且迭代它们。
「艾尔登法环」梅琳娜手办开订 立体手办▪
万代「艾尔登法环」白狼战鬼手办开订 立体手办▪
「夏目友人帐」猫咪老师粘土人开订 立体手办▪
「五等分的新娘∬」中野三玖·白无垢版手办开订 立体手办▪
「海贼王」乌索普Q版手办开订 立体手办▪
良笑社「初音未来」新手办开订 立体手办▪
「黑岩射手DAWN FALL」死亡主宰手办开订 立体手办▪
「盾之勇者成名录」菲洛手办登场 立体手办▪
「魔法少女小圆」美树沙耶香手办开订 立体手办▪
「咒术回战」七海建人粘土人登场 立体手办▪
「五等分的新娘」中野二乃白无垢手办开订 立体手办▪
「为美好的世界献上祝福!」芸芸粘土人开订 立体手办▪
「公主连结 与你重逢」六星可可萝手办开订 立体手办▪
「女神异闻录5」Joker雨宫莲手办开订 立体手办▪
「间谍过家家」约尔・福杰粘土人登场 立体手办▪
「街角魔族 2丁目」吉田优子手办开订 立体手办▪
「火影忍者 疾风传」旗木卡卡西·暗部版粘土人登场 立体手办▪
「佐佐木与宫野」宫野由美粘土人开订 立体手办▪
「盾之勇者成名录」第2季拉芙塔莉雅手办开订 立体手办▪
「咒术回战」两面宿傩Q版坐姿手办开订 立体手办▪
「DATE·A·BULLET」时崎狂三手办开订 立体手办▪
「狂赌之渊××」早乙女芽亚里粘土人开订 立体手办▪
「魔道祖师」魏无羨粘土人开订 立体手办▪
「新·奥特曼」奥特曼手办现已开订 立体手办▪