黑马程序员技术交流社区

标题: List的特点 [打印本页]

作者: 画了一个圈儿    时间: 2014-8-25 23:51
标题: List的特点
Collection有两个最常用的子接口:ListSet
       |--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
SmallRooker 发表于 2014-8-26 07:44
真快啊看的,申请入学考试了吗?

看的特别慢 前面几个帖子是把原来看过的整理了一下。视频还没看完 没申请入学考试 再准备一下
作者: 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
THE_FUTURE 发表于 2014-8-26 11:08
看的好快啊!

一点都不快,只是把以前看过的整理了一下
作者: 画了一个圈儿    时间: 2014-8-27 10:12
hsy 发表于 2014-8-26 11:46
多总结,很好,不要为了发帖而发帖

没帖就没分 没分就不能申请考试:'(  好吧  
作者: 画了一个圈儿    时间: 2014-8-27 10:14
潘多拉 发表于 2014-8-26 11:46
哇塞,是云12吗,有女同胞啊,表示有点异常的兴奋啊,抓紧时间努力

此女同胞可能赶不上云12啦  视频还没看完呢
作者: 画了一个圈儿    时间: 2014-8-27 10:18
lhtwm1 发表于 2014-8-26 17:05
是啊 感觉你看的好快。。。。。。怎么学啊 求经验

我看得很慢 基本上二到三天才能看完一天的视频 要整理笔记 还要看以前讲过的内容。速度不是最重要的,能理解并记忆才行,所以不要着急,只要一直踏实的学,结果是必然的。加油!
作者: hsy    时间: 2014-8-27 11:50
画了一个圈儿 发表于 2014-8-27 10:12
没帖就没分 没分就不能申请考试  好吧

哦哦哦,这样啊,那就多发,哈哈哈:D




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2