黑马程序员技术交流社区
标题: List的特点 [打印本页]
作者: 画了一个圈儿 时间: 2014-8-25 23:51
标题: List的特点
Collection有两个最常用的子接口:List和Set
|--List:元素是有序的,元素可以重复,因为该集合体系有索引。
|--Set:元素是无序的,元素不可以重复。
List特有方法:凡是可以操作角标的方法都是该体系特有的方法
增:add(index,element)
addAll(index,Collection)
删:remove(index)
改:set(index,element)
查:get(index)
subList(from,to)
listIterator()
List集合特有的迭代器:ListIterator,它是Iterator的子接口
在迭代时,不可以通过集合对象的方法操作集合中的元素。
因为会发生ConCurrentModificationException异常。
Iteratorit = al.iterator();
while(it.hasNext())
{
Objectobj = it.next();
if(obj.equals("java02"))
al.add("java000"); //编译时抛出并发修改异常,
//因为迭代时,只能通过迭代器方法操作元素
//不能用集合的方法操作元素
sop("obj:"+obj);
}
sop(al);
所以,在迭代器时,只能用迭代器的方法操作元素,可是Iterator方法是有限的,只能对元素进行判断,取出,删除操作。如果想要其他的操作,如添加,修改等,就需要使用其子接口,ListIterator。
注:ListIterator还提供了特殊的反向遍历方式,hasPrevious(); previous();
import java.util.*;
class ListDemo
{
publicstatic void main(String[] args)
{
ArrayListal = new ArrayList();
al.add("java01");
al.add("java02");
al.add("java03");
al.add("java04");
sop("原集合:"+al);
ListIterator li =al.listIterator();
while (li.hasNext())
{
Objectobj = li.next();
if(obj.equals("java02"))
//li.add("java000"); //[java01, java02, java000, java03,java04]
li.set("java00"); //[java01, java00, java03,java04]
sop("obj:"+obj);
}
sop(al);
while (li.hasPrevious()) //反向遍历,查看前面是否还有元素
{
sop(li.previous()); //输出前面元素
}
}
public static void base_ethod()
{
ArrayList al = new ArrayList();
//添加元素
al.add("java01");
al.add("java02");
al.add("java03");
al.add("java04");
sop("原集合:"+al); //原集合:[java01,java02, java03, java04]
//在指定位置添加元素
//sop(al.add(2,"hello")); //[java01, java02, hello, java03,java04]
//删除指定位置的元素
//sop(al.remove(1)); //[java01, hello, java03,java04]
//修改元素
//sop(al.set(0,"begain")); //[begain, hello, java03, java04]
//通过角标获取元素
//sop("get(2)="+al.get(2)); //get(2)=java03
//获取所有元素
for(int i=0; i<al.size(); i++)
{
sop("al["+i+"]="+al.get(i));
}
Iteratorit = al.iterator();
while(it.hasNext())
{
sop("next:"+it.next());
}
//通过indexOf获取对象的位置
//sop(al.indexOf("java02"));
}
publicstatic void sop(Object obj)
{
System.out.println(obj);
}
}
作者: SmallRooker 时间: 2014-8-26 07:44
真快啊看的,申请入学考试了吗?
作者: 黑马黄武先 时间: 2014-8-26 09:12
谢谢分享~~
作者: 画了一个圈儿 时间: 2014-8-26 09:42
看的特别慢 前面几个帖子是把原来看过的整理了一下。视频还没看完 没申请入学考试 再准备一下
作者: THE_FUTURE 时间: 2014-8-26 11:08
看的好快啊!
作者: hsy 时间: 2014-8-26 11:46
多总结,很好,不要为了发帖而发帖
作者: 潘多拉 时间: 2014-8-26 11:46
哇塞,是云12吗,有女同胞啊,表示有点异常的兴奋啊,抓紧时间努力
作者: lhtwm1 时间: 2014-8-26 17:05
是啊 感觉你看的好快。。。。。。怎么学啊 求经验
作者: 画了一个圈儿 时间: 2014-8-27 10:11
一点都不快,只是把以前看过的整理了一下
作者: 画了一个圈儿 时间: 2014-8-27 10:12
没帖就没分 没分就不能申请考试:'( 好吧
作者: 画了一个圈儿 时间: 2014-8-27 10:14
此女同胞可能赶不上云12啦 视频还没看完呢
作者: 画了一个圈儿 时间: 2014-8-27 10:18
我看得很慢 基本上二到三天才能看完一天的视频 要整理笔记 还要看以前讲过的内容。速度不是最重要的,能理解并记忆才行,所以不要着急,只要一直踏实的学,结果是必然的。加油!
作者: hsy 时间: 2014-8-27 11:50
哦哦哦,这样啊,那就多发,哈哈哈:D
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |