【java】【集合】List、ListIterator、Vector

一、List接口

1、List集合的特有功能概述,其他的都继承自collection接口

  • void add(int index,E element):在指定位置添加元素,会出现索引越界异常,0=<index<=size,其他都会出现异常
  • Obj remove(int index):删除指定位置的元素,返回删除的元素。参数不能为元素,不会对元素进行自动装箱
  • Obj get(int index):获取指定位置的元素,可以进行遍历,该方法是list特有的,其他集合没有索引
  • set(int index, E element):修改指定位置的元素


2、并发修改异常产生的原因及解决方案

  • 需求:我有一个集合,请问,我想判断里面有没有"world"这个元素,如果有,就添加一个"javaee"元素,请写代码实现。   
   Listlist = new ArrayList();
            list.add("a");     //Object obj = new String();    
            list.add("b");
            list.add("world");
            list.add("d");
            list.add("e");
           
            Iterator it = list.iterator();
            while(it.hasNext()){
               Stringstr = (String)it.next();
               if(str.equals("world")){
                    list.add("javaee");         //这里会抛出ConcurrentModificationException并发修改异常
                }
            }

  • 并发修改异常ConcurrentModificationException:遍历的同时在增加元素,因为之前迭代器就认为该集合中有5个元素了,在下面操作的时候就不允许再添加元素了。
  • 迭代器遍历,集合修改集合
  • 解决方案

    * 迭代器迭代元素,迭代器修改元素(ListIterator接口特有的功能add)

    * 集合遍历元素,集合修改元素

 ListIterator lit = list.listIterator();     //如果想在遍历的过程中添加元素,可以用ListIterator中的add方法
 while(lit.hasNext()){
 String str = (String)lit.next();
        if(str.equals("world")){
             lit.add("javaee"); 
              //list.add("javaee");
          }
   }

二、ListIterator接口

  •  boolean hasNext():正向遍历,是否有下一个元素
  •  boolean hasPrevious():反向遍历,是否有前一个元素

注意:初始指针都是0,所以直接用hasPrevious时会判断没有元素。

  • Object next():返回下一个元素
  • Object previous():返回上一个元素


三、Vector类(后续补充)

1、概述:是JDK1.2版本之后,此类改进可以实现List接口。

2、Vector类特有功能

  • public voidaddElement(E obj)
  • public EelementAt(int index)
  • publicEnumeration elements()

3、案例演示   

    * Vector的迭代
            Vectorv = new Vector();                //创建集合对象,List的子类
            v.addElement("a");
            v.addElement("b");
            v.addElement("c");
            v.addElement("d");           

            //Vector迭代
            Enumerationen = v.elements();          //获取枚举
            while(en.hasMoreElements()){           //判断集合中是否有元素
                System.out.println(en.nextElement());//获取集合中的元素
            }





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值