您的位置:首页 > 职场人生

黑马程序员:Java基础——List集合共性方法,Iterator迭代和集合具体对象的特点

2014-10-24 13:47 591 查看
-------
Java EE培训、java培训、期待与您交流! ----------

1.List集合共性方法

[align=left] 首先,我们来了解下Collection的两大分支:[/align]
Collection

|--List:元素是有序的,元素可以重复,因为该集合体系有索引。

|--Set:元素师无序的,元素不可以重复,该集合无索引。
[align=left] 这篇文章主要说List集合。[/align]
[align=left] List特有方法:[/align]
[align=left] 增:add(index,element);[/align]
[align=left] addAll(index,Collection);[/align]
[align=left] 删:remove(index);[/align]
[align=left] 改:set(index,element);[/align]
[align=left] 查:get(index);[/align]
[align=left] subList(from,to);[/align]
[align=left] listIterator();[/align]
[align=left] 以下是示例代码:[/align]
public class ListDemo {
public static void main(String[] args) {
ArrayList alList = new ArrayList();

alList.add("java01");
alList.add("java02");
alList.add("java03");
alList.add("java04");

sop("原数组:"+alList);
//移除角标号为2的元素
//alList.remove(2);
//将角标号为2的元素修改
alList.set(2, "Java003");
//获取角标号为1的元素
sop("角标号为1的元素为:"+alList.get(1));
//获取角标号从1到3的元素(前闭后开区间)
sop("角标号从1到3的元素为:"+alList.subList(1, 3));
sop("新数组:"+alList);

 /*for(Iterator it = alList.listIterator();it.hasNext();){
sop("Iterator遍历--"+it.next());
}*/
}

public static void sop(Object obj){
System.out.println(obj);
}
}


运行结果如下:



2.ListIterator方法

List集合特有的迭代器,ListIterator是Iterator的子接口

在迭代时,不可以通过集合对象的方法操作集合中的元素。

因为会发生ConcurrentModificationException异常。

所以,在迭代时,只能用迭代器的方法操作元素,可是Iterator方法是有限的,只能对元素进行判断,取出,修改等。

就需要使用其子接口:ListIterator。该接口只能通过List集合的listIterator方法获取。

ConcurrentModificationException异常:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。

意思就是当我们要操作要提取的元素时,会导致JVN不知所云,无法进行下一步的执行,就会抛出ConcurrentModificationException异常。

以下是ListIterator的示例代码:

ArrayList alList = new ArrayList();
alList.add("java01");
alList.add("java02");
alList.add("java03");
alList.add("java04");

for(ListIterator it = alList.listIterator();it.hasNext();){
Object object = it.next();

if(object.equals("java03")){
//it.add("Java005");
it.set("Java003");
}
sop(object);
}
sop(alList);
运行结果为:



listIterator也可以进行反向遍历,以下是正反向遍历代码:

ListIterator it = alList.listIterator();
for(;it.hasNext();){
Object object = it.next();

if(object.equals("java03")){
//it.add("Java005");
it.set("Java003");
}
sop("Next="+object);
}

for(;it.hasPrevious();){
sop("Previous=="+it.previous());
}
sop(alList);
运行结果如下:



3.List集合具体对象的特点

在最后,我们来认识一下List的子类:

ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快,但是增删速度稍慢,线程不同步。

LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询速度稍慢。

Vector:底层是叔组数据结构。线程同步,被ArrayList替代了。

我会在接下来的几篇Blog中依次说到。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐