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

love_Aym發表於2018-04-24

一、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());//獲取集合中的元素
            }





相關文章