`
阅读更多

事例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作为常用的列表数据结构,其性能和使用场景需要根据具体需求来权衡。理解其内在机制和潜在问题,...

    OutOfMemoryError(解决方案).md

    需要注意的是,这种方法只是暂时的解决方案,如果程序存在内存泄漏的问题,增加内存只会延迟问题的爆发,而不能根本解决问题。 2. 查找并修复内存泄漏。内存泄漏是指程序中某些对象被分配了内存,但是在之后的程序...

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

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

    java.lang.UnsupportedOperationException(解决方案).md

    ### 解决方案三:使用其他方法或工具替代不支持的操作 有时候,由于某些对象或上下文环境的限制,某些操作确实无法被支持。在这些情况下,开发者可以考虑使用其他方法或工具来实现相同的目的。这可能涉及对现有代码...

    ErrDataOverflow(解决方案).md

    在编写程序时,数据溢出是一个常见的问题,尤其是在处理大量数据时,很容易超出数据...在遇到具体问题时,还需要依据问题的特点,灵活采用更高级的解决方案。通过这些策略,可以有效避免数据溢出,处理大规模数据集。

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

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

    ERR_BUFFER_OVERFLOW(解决方案).md

    在Java中,对应的解决方案是使用`ArrayList`类。`ArrayList`是Java集合框架的一部分,同样提供动态大小调整功能。以下是一个使用`ArrayList`的示例代码: ```java import java.util.ArrayList; import java.util....

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

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

    Vector Underflow(处理方案).md

    在Java编程语言中,使用ArrayList作为存储数据的容器时,可能会遇到内存溢出的问题。内存溢出是指程序尝试分配的内存超出了JVM(Java虚拟机)可提供的内存空间。内存溢出问题通常可以通过调整程序逻辑、增加系统资源...

    java.常用类(解决方案).md

    Java中常用类的使用方法和示例代码是Java开发者在日常编程工作中经常遇到的主题。这些类包括但不限于String、File以及ArrayList等,它们各自拥有不同的功能和用途,以及在实际开发中所承担的关键角色。下面将详细...

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

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

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

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

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

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

    JarException(解决方案).md

    Java开发者在使用JAR文件时可能会遇到JarException,这是一个提示文件错误或读取问题的异常。为了解决这个问题,开发者可以采取以下几个步骤。 首先,需要检查JAR文件是否真实存在于项目中正确的位置。如果文件不...

    com.cortexm3.exception.MemoryOverflowException(解决方案).md

    在嵌入式系统开发过程中,内存管理是非常关键的一环,尤其是在使用ARM Cortex-M3微控制器等资源受限的...如果在实际操作中遇到具体问题,提供详细的代码上下文或具体示例,将有助于获得更加专业和个性化的解决方案。

Global site tag (gtag.js) - Google Analytics