Java之LinkedList链表测试

Java之LinkedList链表测试
        // 如果想通过iterator进行集合的添加、删除、修改操作,可以使用java.util.ListIterator接口,该接口实现了java.util.Iterator接口,同时还增加了一些额外的方法,方便使用,如add、remove、set、nextIndex(调用next方法返回元素的索引值,int类型)、previousIndex(调用previous方法返回元素的索引值,int类型)。 
        List<String> staff =  new LinkedList<String>();
        staff.add("Amy");
        staff.add("Bob");
        staff.add("Carl");

         //  删除方法很特殊,真正删除的是iter左边的元素, 类似于退格键。
        ListIterator<String> iter = staff.listIterator();
        iter.next();
        iter.remove();
      
         //  遍历.
         for (Iterator<String> iterator = staff.iterator(); iterator.hasNext();) {
            String s = (String) iterator.next();
            System.out.println("-------------->" + s);
        }

ConcurrentModificationException异常什么时候会发生?
List<String> staff =  new LinkedList<String>();
        staff.add("Amy");
        staff.add("Bob");
        staff.add("Carl");

         //  ConcurrentModificationException异常什么时候会发生?
        ListIterator<String> iter = staff.listIterator();
        ListIterator<String> iter2 = staff.listIterator();
       
         //  当有多个iterator对同一个list迭代,如果有迭代器对list进行了诸如add或remove的操作时,则另一个迭代器会发生该异常。
        // 因为iterator会负责检测所他自己的索引变化跟所迭代集合的变化是否是一致的,如果不一致就会抛出
ConcurrentModificationException异常。
         //  如果有进行set方法的操作,则不会发生该异常。
        iter.add("yyy");
        iter.remove();
        iter2.next();

         //  按顺序添加到集合中.
         for (Iterator<String> iterator = staff.iterator(); iterator.hasNext();) {
            String s = (String) iterator.next();
            System.out.println("-------------->" + s);
        }

Java之LinkedList集合结合listIterator的使用案例:
package com.javacore;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;

public  class LinkedListTest3 {
     public  static  void main(String[] args) {
        List<String> a =  new LinkedList<String>();
        a.add("a-Amy");
        a.add("a-Bob");
        a.add("a-Carl");

        List<String> b =  new LinkedList<String>();
        b.add("b-xxx");
        b.add("b-yyy");
        b.add("b-zzz");

        ListIterator<String> aIter = a.listIterator();
        Iterator<String> bIter = b.iterator();
         //  将b集合插入/合并到a集合中
         while (bIter.hasNext()) {
             if (aIter.hasNext()) {
                aIter.next();
            }
            aIter.add(bIter.next());
        }
         //  输出a集合
        System.out.println(a);

         //  从b中删除第二个元素
        bIter = b.iterator();
         while (bIter.hasNext()) {
            bIter.next();  //  跳过第一个元素

             if (bIter.hasNext()) {
                bIter.next();  //  跳过下一个元素
                bIter.remove();  //  删除那个元素
            }
        }

         //  输出b集合
        System.out.println(b);

         //  删除集合b
        a.removeAll(b);
        
        System.out.println(a);
    }
}

你可能感兴趣的:(Java之LinkedList链表测试)