当前位置: 首页 > 编程笔记 >

java中循环遍历删除List和Set集合中元素的方法(推荐)

朱啸
2023-03-14
本文向大家介绍java中循环遍历删除List和Set集合中元素的方法(推荐),包括了java中循环遍历删除List和Set集合中元素的方法(推荐)的使用技巧和注意事项,需要的朋友参考一下

今天在做项目时,需要删除List和Set中的某些元素,当时使用边遍历,边删除的方法,却报了以下异常:

ConcurrentModificationException

为了以后不忘记,使用烂笔头把它记录如下:

错误代码的写法,也就是报出上面异常的写法:

Set<CheckWork> set = this.getUserDao().getAll(qf).get(0).getActionCheckWorks();
for(CheckWork checkWork : set){
  if(checkWork.getState()==1){
    set.remove(checkWork);
  }
}

注意:使用上面的写法就会报上面的ConcurrenModificationException异常,原因是,集合不可以一边遍历一边删除。

正确的写法如下:

1. 遍历删除List

List<CheckWork> list = this.getUserDao().getAll();
Iterator<CheckWork> chk_it = list.iterator();
while(chk_it.hasNext()){
  CheckWork checkWork = chk_it.next();
  if(checkWork.getPlanState()==1){
    chk_it.remove();
  }
}

2. 遍历删除Set

Set<CheckWork> set = this.getUserDao().getAll().get(0).getActionCheckWorks();
		Iterator<CheckWork> it = set.iterator();
		while(it.hasNext()){
			CheckWork checkWork = it.next();
			if(checkWork.getState()==1){
				it.remove();
			}
		}

以上这篇java中循环遍历删除List和Set集合中元素的方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍正确遍历删除List中的元素方法(推荐),包括了正确遍历删除List中的元素方法(推荐)的使用技巧和注意事项,需要的朋友参考一下 遍历删除List中的元素有很多种方法,当运用不当的时候就会产生问题。下面主要看看以下几种遍历删除List中元素的形式: 1.通过增强的for循环删除符合条件的多个元素 2.通过增强的for循环删除符合条件的一个元素 3.通过普通的for删除删除符合条件的多

  • 本文向大家介绍java集合类arraylist循环中删除特定元素的方法,包括了java集合类arraylist循环中删除特定元素的方法的使用技巧和注意事项,需要的朋友参考一下 在项目开发中,我们可能往往需要动态的删除ArrayList中的一些元素。 一种错误的方式:  上面这种方式会抛出如下异常:    因为你删除了元素,但是未改变迭代的下标,这样当迭代到最后一个的时候就会抛异常咯。 可以对上面的

  • 本文向大家介绍C#遍历List并删除某个元素的方法,包括了C#遍历List并删除某个元素的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了C#遍历List并删除某个元素的方法。分享给大家供大家参考。具体如下: 1、我们选择用for循环: 如果这样循环,肯定不对, {A B C D E F G H}  假设当前遍历到D(i=3),移除,接着遍历i=4(F), 此时跳过了E(i=3) 2、

  • 本文向大家介绍一分钟了解Java中List集合与set集合的多种遍历方式,包括了一分钟了解Java中List集合与set集合的多种遍历方式的使用技巧和注意事项,需要的朋友参考一下 List集合与set集合的多种遍历方式 方法有: 1. for循环遍历 2. foreach增强循环遍历 3. 迭代器遍历 4. lambda表达式遍历 一、List集合的遍历 1.创建一个集合,添加一些元素放在集合当中

  • 问题内容: 这是我的代码: 我想按降序打印数组,而不是按升序打印(从数组的最后一个元素到第一个元素),但我只会抛出此错误: 为什么会这样呢?我希望通过使用myArray.length将计数器设置为8,代码将只打印出数组的第8个元素,然后继续打印之前的那个元素。 问题答案: 在Java中数组索引从到,不给,因此,你应该相应地分配您的变量,并使用正确的比较操作。 您的循环应如下所示:

  • 我得到一个使用下面的代码的锚的列表,然后我想去每个链接。我想出了下面的代码,但是在第一个循环之后,我得到了以下异常 org.openqa.selenium.staleElementReferenceException:过时元素引用:元素未附加到页面文档(会话信息:Chrome=55.0.2883.87) 有没有办法做到这一点,而不需要每次返回页面?