posts - 167,  comments - 30,  trackbacks - 0
        // 如果想通过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);
    }
}
posted on 2009-08-18 08:33 David1228 阅读(320) 评论(0)  编辑  收藏 所属分类: JAVA

<2009年8月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

常用链接

留言簿(4)

随笔分类

随笔档案

文章档案

新闻分类

新闻档案

相册

收藏夹

Java

Linux知识相关

Spring相关

云计算/Linux/虚拟化技术/

友情博客

多线程并发编程

开源技术

持久层技术相关

搜索

  •  

积分与排名

  • 积分 - 353971
  • 排名 - 155

最新评论

阅读排行榜

评论排行榜