首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何遍历集合时删除元素

概述对java.util包下的集合类型来说,如果在通过for-each循环进行遍历时,对集合进行修改操作(删除、添加、修改元素),很多情况下会抛出ConcurrentModificationException...这是因为for-each循环是通过迭代器的方式进行的遍历。而该包下的迭代器都属于fail-fast迭代器[2],即不允许在遍历的同时,对集合进行修改,因为这样会导致不确定的遍历结果。...modCount属性,用于记录集合被修改的次数,而迭代器作为集合的内部类,有一个expectedModCount属性。...而迭代中每次通过next方法获取下一个元素时,都会检查这两个值是否相等,如不相等就会抛出ConcurrentModificationException.解决方案不推荐在遍历的同时对集合进行修改,可新建一个集合...但若是出于代码简洁的目的,想要实现在遍历时删除某个元素,可通过以下方式实现:1.

11010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Groovy】集合遍历 ( 使用 for 循环遍历集合 | 使用集合的 each 方法遍历集合 | 集合的 each 方法返回值分析 )

    文章目录 一、使用 for 循环遍历集合 二、使用 each 方法遍历集合 三、集合的 each 方法返回值分析 四、完整代码示例 一、使用 for 循环遍历集合 ---- 使用 for 循环 , 遍历集合...方法 , 传入闭包作为参数 , 可以遍历集合 , 闭包就是遍历时执行的内容 ; public static Iterable each( Iterable self...调用集合的 each 方法遍历 // 使用集合的 each 方法进行遍历 // 传入的闭包参数 , 就是循环体内容 // 闭包中的 it 参数 , 就是当前正在遍历的元素本身...使用 for 循环遍历 // 使用 for 循环遍历集合 println "" for (i in list) { print...调用集合的 each 方法遍历 // 使用集合的 each 方法进行遍历 // 传入的闭包参数 , 就是循环体内容 // 闭包中的 it 参数 , 就是当前正在遍历的元素本身

    3.2K20

    【Groovy】map 集合 ( map 集合遍历 | 使用 map 集合的 each 方法遍历 map 集合 | 代码示例 )

    文章目录 一、使用 map 集合的 each 方法遍历 map 集合 二、代码示例 一、使用 map 集合的 each 方法遍历 map 集合 ---- 遍历 map 集合 , 可以调用 map 集合的...each 方法 ; list 集合中 , 调用 each 方法 , 传入的闭包中有 1 个参数 ; 参考 【Groovy】集合遍历 ( 使用 for 循环遍历集合 | 使用集合的 each 方法遍历集合...| 集合的 each 方法返回值分析 ) 集合 ; map 集合中 , 调用 each 方法 , 传入的闭包有 2 个参数 ; 2 个参数分别是 Key 和 Value , 这两个参数没有指定类型..., 会根据当前遍历的 map 集合进行自动类型适配 ; map 集合的 each 方法 函数原型 : /** * 允许使用闭包迭代映射。...* * @param self 要遍历的 map 集合 * @param closure 在映射的每个条目上应用1或2 arg闭包 * @return 返回 self

    10.9K30

    【Groovy】map 集合 ( map 集合遍历 | 使用 map 集合的 find 方法遍历 map 集合 | 代码示例 )

    文章目录 一、使用 map 集合的 find 方法遍历 map 集合 二、代码示例 一、使用 map 集合的 find 方法遍历 map 集合 ---- 使用 map 集合的 find 方法遍历 map...集合 , 传入一个闭包参数 ; 该闭包中 , 可以有 1 个参数 , 也可以有 2 个参数 ; 如果 有 1 个参数 , 则 传递 Entry 键值对 对象 ; 如果有 2 个参数 ,...则 传递 键 和 值 两个对象 ; 该方法会返回 map 集合中 第一个查找到的 Entry 键值对对象 , 该对象中包含一个 键 和 值 ; map 集合的 find 方法 函数原型 : /...groovyTestCase">assert [a:1, b:3].find { it.value == 3 }.key == "b" * * @param self map 集合...可以不使用引号 , 可以使用单引号 '' , 也可以使用双引号 "" def map = [J:"Java", "K":"Kotlin", 'G':"Groovy"] // 遍历

    11K40

    【Groovy】集合遍历 ( 使用集合的 eachWithIndex 方法进行遍历 | 代码示例 )

    文章目录 一、使用集合的 eachWithIndex 方法进行遍历 二、代码示例 一、使用集合的 eachWithIndex 方法进行遍历 ---- 集合的 eachWithIndex 方法 , 该函数传入一个...Closure 闭包作为参数 , 闭包中有 2 个参数 , 分别是 T 和 Integer 类型的 , T 就是集合元素类型 , Integer 是当前遍历集合元素的索引值 ; 因此 , 使用...eachWithIndex 方法遍历集合 , 可以在传入的闭包中 , 得到集合的 当前遍历条目值 , 和 当前遍历的下标索引 ; eachWithIndex 方法 返回值是 self 自身 , 可以看到..., 该方法的 返回值还是集合本身 , 如果在遍历过程中修改集合的值 , 原集合的值会被修改 ; 集合 eachWithIndex 方法原型 : /** * 迭代 iterable 类型...使用 eachWithIndex 遍历集合 , 返回集合本身 def list3 = list.eachWithIndex{ String entry, int i ->

    2.3K30

    如何高效地遍历 MongoDB 超大集合

    错误方法:find() 也许,在遍历 MongoDB 集合时,我们会这样写: const Promise = require("bluebird"); function findAllMembers(...当 Member 集合中的 document 不多时,比如只有 1000 个时,那确实没有问题。但是当 Member 集合中有 1000 万个 document 时,会发生什么呢?...console.log(`loop all ${N} members success`); } test(); 使用cursor()方法返回 QueryCursor,然后再使用eachAsync()就可以遍历整个集合了...如何测试? 这篇博客介绍的内容很简单,但是也很容易被忽视。如果大家测试一下,印象会更加深刻一些。...参考 如何使用 mongoose 对一个 100 万+的 mongodb 的表进行遍历操作 Cursors in Mongoose 4.5 关于Fundebug Fundebug专注于JavaScript

    2.4K40

    java遍历list对象集合_java遍历List集合的方法有哪些

    本文为大家分享了有序集合List中的四种遍历方式,希望能对大家有所帮助。 (学习视频分享:java课程) 先创建一个Student类,用来创建对象,并提供有参和无参构造方法。...name; this.age = age; } public Student() { super(); // TODO Auto-generated constructor stub } } 以下是四种遍历...zhangsan2”,21); Student s3 = new Student(“zhangsan3”,22); Student s4 = new Student(“zhangsan4”,23); //创建一个集合...List studentList = new ArrayList(); //将上面的四个学生对象添加到集合中 studentList.add(s1); studentList.add(s2); studentList.add...(s3); studentList.add(s4); // 普通for循环遍历 //for (int i = 0 ; i < studentList.size() ; i++) { //Student

    2.6K20

    网易三面:Stream如何提高遍历集合效率?

    Stream如何优化遍历? 上面我们初步了解了Java8中的Stream API,那Stream是如何做到优化迭代的呢?并行又是如何实现的?下面我们就透过Stream源码剖析Stream的实现原理。...2F1282fc7ej00qsautf000pc001fi00a4g.jpg&thumbnail=690x2147483647&quality=75&type=jpg] 下面我们再通过一个例子来感受下Stream的操作分类是如何实现高效迭代大数据集合的...从代码角度来看,你可能会认为是这样的操作流程:首先遍历一次集合,得到以“张”开头的所有名字;然后遍历一次filter得到的集合,将名字转换成数字长度;最后再从长度集合中找到最长的那个名字并且返回。...我们来逐步分析下这个方法里所有的操作是如何执行的。...合理使用Stream 看到这里,你应该对Stream API是如何优化集合遍历有个清晰的认知了。Stream API用起来简洁,还能并行处理,那是不是使用Stream API,系统性能就更好呢?

    50430

    如何遍历ArrayList集合,并安全删除其中的元素

    如何遍历ArrayList集合,并安全删除其中的元素?...1、遍历ArrayList集合有三种方式 (1)for循环 (2)增强for循环,也就是foreach (3)迭代器iterator 2、普通for循环遍历删除元素,list集合的大小会变小...解决方法:将list集合反过来遍历,循环删除其中的元素 当我们使用增强for循环删除第一个元素后,再去遍历list集合,此时就会报并发修改错 (concurrentModificationException...同样会报conCurrentModificationbException异常 3、总结 如果是遍历删除list集合中某个特定的元素,使用这三个遍历方式都可以。...其次使用普通for循环反过来遍历list集合 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/163132.html原文链接:https://javaforall.cn

    1.1K20

    【Groovy】集合遍历 ( 使用集合的 collect 循环遍历集合并根据指定闭包规则生成新集合 | 代码示例 )

    文章目录 一、使用集合的 collect 循环遍历集合并根据指定闭包规则生成新集合 二、代码示例 一、使用集合的 collect 循环遍历集合并根据指定闭包规则生成新集合 ---- 调用集合的 collect...方法进行遍历 , 与 调用 each 方法进行遍历 , 实现的功能是不同的 ; collect 方法主要是 根据 一定的转换规则 , 将 现有的 集合 , 转换为一个新的集合 ; 新集合是 重新创建的集合..., new ArrayList(self.size()), transform) , 传入了新的 ArrayList 集合作为参数 , 该 新的 ArrayList 集合是新创建的集合 , 其大小等于被遍历集合..., 根据 transform 闭包逻辑 和 原集合的值 , 计算 新集合中对应位置元素的值 ; /** * 方法遍历集合,将每个值转换为新值 transform</code...使用 collate 遍历集合 , 返回一个新集合 , 集合的元素可以在闭包中计算得来 def list3 = list.collect{ /

    2.6K20

    Stream使用这么久,它是如何提高遍历集合效率?

    对于List 集合类,我想大家肯定很了解了,那我想一定也知道集合的顶端接口 Collection。...Stream 如何优化遍历? 上面我们初步了解了 Java8 中的 Stream API,那 Stream 是如何做到优化迭代的呢?并行又是如何实现的?...2.Stream 源码实现 在了解 Stream 如何工作之前,我们先来了解下 Stream 包是由哪些主要结构类组合而成的,各个类的职责是什么。参照下图: ?...从代码角度来看,你可能会认为是这样的操作流程:首先遍历一次集合,得到以“张”开头的所有名字;然后遍历一次 filter 得到的集合,将名字转换成数字长度;最后再从长度集合中找到最长的那个名字并且返回。...从大的设计方向上来说,Stream 将整个操作分解为了链式结构,不仅简化了遍历操作,还为实现了并行计算打下了基础 从小的分类方向上来说,Stream 将遍历元素的操作和对元素的计算分为中间操作和终结操作

    89430

    【Kotlin】集合操作总结 ( List 集合 | MutableList 集合 | List 集合遍历 | Set 集合 | MutableSet 集合 | Map 集合 | 可变 Map集合 )

    五、修改 MutableList 集合的 mutator 函数 1、添加元素运算符 += 和 删除元素运算符 -= 2、通过 Lambda 表达式筛选要删除的元素 六、List 集合遍历 七、List...通过解构一次性给多个元素赋值 八、Set 集合 九、可变 Set 集合 十、List 与 Set 之间相互转换 十一、数组类型 十二、Map 集合 十三、获取 Map 值 十四、Map 遍历 十五、可变...mutableList.removeIf { it.contains("T") } println(mutableList) } 执行结果 : [Jerry] 六、List 集合遍历...---- List 集合遍历 : for in 循环遍历 : // 使用 for in 循环遍历 for (name in list) { println("for :...$name") } forEach 遍历 : /** * 在每个元素上执行给定的[action]。

    5.8K20
    领券