读书人

关于ArrayList使用时常遇到的有关问题

发布时间: 2012-10-23 12:12:21 作者: rapoo

关于ArrayList使用时常遇到的问题以及解决方法

事例1:ArrayList在迭代的时候不能去改变自身的元素集合,否则会抛异常:java.util.ConcurrentModificationException

List<Integer> list = new ArrayList<Integer>();        list.add(new Random().nextInt(10));        list.add(new Random().nextInt(10));        //开始迭代        Iterator<Integer> iter = list.iterator();        while (iter.hasNext()) {            System.out.println("迭代:" + iter.next());            list.add(new Random().nextInt());        }

?

?

事例2:ArrayList在迭代的时候可以用迭代器删除ArrayList中的元素

List<Integer> list = new ArrayList<Integer>();        list.add(new Random().nextInt(10));        list.add(new Random().nextInt(10));        //开始迭代        Iterator<Integer> iter = list.iterator();        while (iter.hasNext()) {            System.out.println(iter.next()+"元素被删除");            iter.remove();        }

?

?

事例3:CopyOnWriteArrayList是线程安全的集合类,该集合在迭代的时候,可以改变自身的元素集合

List<Integer> syncList = new CopyOnWriteArrayList<Integer>();        syncList.add(1);        syncList.add(5);        Iterator<Integer> iter = syncList.iterator();        int flag;        while (iter.hasNext()) {            flag = iter.next();            System.out.println("迭代:" + flag);            syncList.remove(new Integer(flag));        }        System.out.println("集合的大小:" + syncList.size());

?

?

事例4:CopyOnWriteArrayList是线程安全的集合类,该集合在迭代的时候,不能用迭代器去删除集合中的元素 ,否则会抛异常:java.lang.UnsupportedOperationException

List<Integer> syncList = new CopyOnWriteArrayList<Integer>();        syncList.add(1);        syncList.add(5);        Iterator<Integer> iter = syncList.iterator();        while (iter.hasNext()) {            System.out.println("迭代:" + iter.next());            iter.remove();        }        System.out.println("集合的大小:" + syncList.size());

?

读书人网 >行业软件

热点推荐