`
阅读更多

事例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());

 

2
1
分享到:
评论

相关推荐

    关于 ArrayList get(0)的异常JDK源码跟进

    解决这个问题的方法很简单:在调用`get(0)`之前,确保ArrayList至少有一个元素。可以通过`add`方法添加元素,或者在构造ArrayList时指定初始容量,避免数组为空。 此外,理解ArrayList的动态扩容机制也很重要。当...

    intent传递ArrayList&lt;T&gt;

    5. 常见问题与解决方案:有时,可能会遇到无法传递null对象的问题。为了解决这个问题,可以在传递前检查并处理null值,或者使用Optional类包装ArrayList。 总结,Intent在Android中扮演着重要角色,而传递ArrayList...

    Morphia使用问题及解决方案集锦

    本文主要探讨了在使用Morphia框架时遇到的一些常见问题及其解决方案。这些解决方案不仅有助于解决实际开发中的难题,也为进一步理解和使用Morphia提供了指导。希望本文能帮助开发者更好地掌握Morphia的使用技巧。

    java代码-使用java解决学生管理系统的问题的源代码

    - 学生管理器可能使用ArrayList或HashMap存储学生对象,ArrayList用于顺序存取,HashMap则提供快速的查找和删除功能,通过学号作为键。 3. **数据库交互**: - 为了持久化数据,系统可能使用JDBC(Java Database ...

    ArrayList底层原理

    面试中可能会遇到关于ArrayList的问题,比如询问ArrayList和LinkedList的区别,或者如何优化ArrayList的性能。ArrayList更适合于元素的随机访问和遍历,而不适合频繁的插入和删除。如果插入和删除操作较多,...

    ArrayList:(数组)列表数据结构的实现;问题与解决方案

    可以使用动态规划方法解决,对于ArrayList,我们可以通过遍历并更新最大和最小乘积来找到答案。 综上所述,ArrayList作为常用的列表数据结构,其性能和使用场景需要根据具体需求来权衡。理解其内在机制和潜在问题,...

    JAVA语言中设计到的问题解决方案

    总的来说,JAVA语言涉及的问题解决方案涵盖广泛,需要我们不断学习和实践,才能在遇到问题时游刃有余。通过深入理解JAVA的核心特性,熟练掌握基础语法和高级特性,结合实际项目经验,我们可以更好地应对各种挑战,...

    java代码-使用ArrayList对员工信息进行添加和显示

    在`README.txt`文件中,可能会包含一些关于项目的目的、如何运行程序、如何解读输出以及可能遇到的问题和解决办法的说明。运行这个项目,你需要一个Java开发环境(JDK),将代码编译为`.class`文件,然后通过`java ...

    JUC包含线程,线程池,CAS,volatile等底层原理,以及相关问题的解决方式以及相关工具类的使用

    Java中的ArrayList、LinkedList和Vector在并发环境下使用时可能会遇到线程安全问题。ArrayList和LinkedList是非线程安全的,而Vector虽然保证了线程安全,但由于其内部使用了synchronized关键字,性能较低。为了在...

    Java开发经常遇到的经典265道题.docx

    根据提供的文件信息,本文将对《Java开发经常遇到的经典265道题》中的关键知识点进行梳理和总结。...通过学习这些内容,可以更好地理解Java生态系统的各个方面,为实际工作中的问题解决打下坚实的基础。

    面试Java程序员最可能遇到的问题考试大全

    本文将详细解答在Java面试中可能会遇到的一些核心问题,这些问题涵盖了Java语言的基础概念、类库使用、异常处理、内存管理、多线程、设计模式等多个方面。以下是针对这些面试问题的详细解释: 1. **面向对象的特征*...

    Java多线程并发访问解决方案

    在Java编程中,多线程并发...以上是Java多线程并发访问的主要解决方案,理解并熟练运用这些技术,可以有效地解决并发编程中遇到的问题,提升程序的稳定性和效率。在实际开发中,应根据具体需求选择合适的并发控制策略。

    (Java源码阅读) ArrayList为什么线程不安全?

    ArrayList是Java集合框架中常用的动态...总之,ArrayList在多线程环境下需要额外的同步措施来保证其正确性,否则可能会遇到数据一致性问题。开发者应根据具体需求选择合适的线程安全策略,以确保程序的稳定性和正确性。

    关于方法iterator()找不着的问题~~~~~

    当你遇到“方法iterator()找不着的问题”时,这通常意味着你在尝试使用`iterator()`时遇到了错误,可能是由于以下几个原因: 1. **类库不兼容**: 如果你正在使用的类库版本不支持`iterator()`方法,比如你引用了...

    java代码-ArrayList

    而`README.txt`文件可能是对这些代码的解释或使用说明,包括如何编译和运行代码,以及可能遇到的问题和解决方案。 理解并熟练使用ArrayList对于Java开发者来说非常重要,因为它是处理动态数据集合的常用工具,广泛...

    Java面试题和JSP网页编程及常见问题word文档

    通过学习和掌握这些知识点,不仅可以为Java面试做好充分准备,也能提升你在JSP网页编程方面的专业能力,解决实际开发中遇到的问题。文档中的详细内容将提供深入的解释和示例,帮助你巩固理论知识并提高实践技能。

    FPP-MIU解决方案:编码问题的解决方案Maharishi

    "FPP-MIU解决方案:编码问题的解决方案Maharishi"这个标题暗示了一个专门针对编码问题的解决方案,可能是由Maharishi这一名称所代表的个人或团队提出的。在这个场景中,"FPP-MIU"可能是一个项目、一个模块或者一种...

    在搜索引擎开发过程中的问题解决(关于高亮和结果集)

    ### 在搜索引擎开发过程中的问题解决(关于高亮和结果集) ...通过以上分析和解决方案,我们可以有效地解决在搜索引擎开发过程中遇到的关于结果集管理和高亮显示的问题,提高用户体验的同时优化系统的性能。

    关于Java开发的五百个常见问题

    Java开发是全球软件行业中最为广泛使用的编程语言之一,它的应用范围涵盖了从小型...这份资源对于初学者和经验丰富的开发者来说都是一份宝贵的参考资料,能够帮助他们在遇到问题时迅速找到解决方案,从而提高开发效率。

    解决数组定义太大无法运行问题

    在编程过程中,我们时常会遇到数组定义过大导致程序无法运行的问题。这主要是因为计算机内存有限,当数组元素数量超出内存可承受范围时,程序就会出现内存溢出或运行时间过长的情况。本篇将详细讲解如何解决这类问题...

Global site tag (gtag.js) - Google Analytics