`
beizinuo
  • 浏览: 32530 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

在 List 遍历的时候用 remove 带来的问题

 
阅读更多
List每remove掉一个元素以后,后面的元素都会向前移动,此时如果执行i=i+1,则刚刚移过来的元素没有被读取。

  解决方法:

  1.倒过来遍历list

  for (int i = list.size()-1; i > =0; i--) {

  if (((String) list.get(i)).startsWith("abcde")) {

  list.remove(i);

  }

  }

  2.每移除一个元素以后再把i移回来

  for (int i = 0; i < list.size(); i++) {

  if (((String) list.get(i)).startsWith("abcde")) {

  list.remove(i);

  i=i-1;

  }

  }

  3.使用iterator.remove()方法删除

  for (Iterator it = list.iterator(); it.hasNext();) {

  String str = (String)it.next();

  if (str.equals("chengang")){

  it.remove();

  }

  }

  }

  System.out.println("after remove:list.size()=" + list.size());

  }

分享到:
评论

相关推荐

    C#遍历List并删除某个元素的方法

    当我们需要遍历List并根据条件删除特定元素时,需要注意正确的方法,以避免在遍历过程中出现错误。以下将详细介绍如何在C#中遍历List并删除元素,包括正序和倒序遍历的技巧。 首先,我们来看一下错误的遍历方式。...

    list遍历集合源码

    例如,如果你在初始化时不确定具体使用哪种List实现,可以先声明一个List类型的引用,后期根据需求再决定填充哪种实现。 此外,List接口还有其他一些方法,如`contains(Object o)`用于判断List是否包含特定元素,`...

    HashMap和List遍历方法及如何遍历删除元素总结

    要解决List遍历删除元素的问题,可以使用Iterator来遍历List,并使用Iterator的remove方法来删除元素。这样可以避免ConcurrentModificationException异常。 HashMap的遍历方法 1. 使用keySet()方法 使用keySet()...

    list遍历的五种方法

    在 Java 编程中,遍历 List 集合是一项常见的任务,特别是在处理数据或执行迭代操作时。这里,我们详细探讨了五种遍历 List 集合的方法,并结合 List 接口概述来理解其核心特性。 1. **普通 for 循环遍历** 这是最...

    List.removeAll() 方法的性能效率

    在Java编程语言中,`List.removeAll()`方法是一个非常实用的函数,它允许我们从列表中一次性移除所有指定元素。这个方法是集合框架的一部分,它提供了高效的方式来进行元素的删除操作。本文将深入探讨`removeAll()`...

    java使用ListIterator对List遍历时添加修改删除​

    在Java编程中,`ListIterator`是`List`接口提供的一种特殊的迭代器,它具有双向遍历的能力,不仅可以向前遍历列表,还可以向后遍历。`ListIterator`还提供了在遍历过程中添加、修改和删除元素的功能,使得对列表的...

    java中List对象集合的遍历方法(三个)

    如果在遍历过程中需要移除元素,必须使用`it.remove()`,直接调用`list.remove()`会导致并发修改异常(ConcurrentModificationException)。 ### 第二种:增强型for循环(foreach) ```java for (A a : list) { /...

    C#在foreach遍历删除集合中元素的三种实现方法

    在foreach中删除元素时,每一次删除都会导致集合的大小和元素索引值发生变化,从而导致在foreach中删除元素时会抛出异常。 集合已修改;可能无法执行枚举操作。 方法一:采用for循环,并且从尾到头遍历 如果...

    Iterator遍历过程中list删除导致异常

    在Java编程中,`Iterator`是...在遍历集合时,务必避免在迭代器之外直接修改集合,或者在迭代过程中使用`Iterator`的`remove()`方法。同时,合理利用Java 8的流API可以有效避免这类异常,提高代码的可读性和安全性。

    java遍历list集合3种方式和性能对比

    如果在遍历过程中需要删除元素,只能使用`it.remove()`,而不能直接使用`list.remove()`,否则可能会引发并发访问错误。 2. 使用增强型`for`循环(也称为foreach循环): ```java List list = new ArrayList(); // ...

    Java中List集合的遍历实例详解

    如果需要在遍历过程中删除元素,必须使用`it.remove()`方法,不能直接调用`list.remove()`,否则会出现并发访问异常。 2. **增强型for循环(foreach)遍历** Java 5引入了增强型for循环,也称为foreach循环,使得...

    iterator 遍历循环代码

    在给定的代码片段中,我们看到的是使用Struts2标签库中的`&lt;s:iterator&gt;`标签来遍历一个名为`userlist`的集合对象。具体代码如下: ```xml &lt;s:iterator value="userlist" id="uid"&gt; &lt;td&gt;&lt;s:property value="#uid....

    字典的遍历键值对入门学习

    ### 字典的遍历键值对入门学习 在编程领域,数据结构的高效处理是提升程序性能的关键之一。...正确地使用字典以及掌握如何遍历键值对,可以帮助开发者更高效地编写代码。希望本文能为初学者提供一定的帮助。

    Java list利用遍历进行删除操作3种方法解析

    在使用 for 循环遍历 list 时,需要注意避免下标问题。下面是一个常见的错误示例: ```java for (int i = 0; i &lt; list.size(); i++) { if (list.get(i).equals("del")) { list.remove(i); } } ``` 这个示例中,...

    【Java面试题】List如何一边遍历,一边删除?

    在Java编程中,遍历并删除List集合是一个常见的操作,但在实际编程中,如果不使用正确的方法,可能会导致`java.util.ConcurrentModificationException`异常。本文主要针对这个面试题,详细讲解如何在遍历List的同时...

    java数组遍历 删除remove(示例代码)

    在示例代码中,`aa.remove(c4)`这行代码在遍历之前删除了`c4`对象,因此不会出现问题。如果在遍历过程中删除元素,通常需要使用迭代器(Iterator)来安全地进行,因为迭代器会跟踪当前元素并处理删除后的调整。 ...

    python列表的逆序遍历实现

    例如,在一个包含数字的列表中,如果我们要删除所有包含数字"2"的元素,直接正向遍历并使用`remove()`函数会遇到问题,因为删除元素会导致后续元素的下标发生变化,使得某些元素在遍历过程中被遗漏。 错误的正向...

    Java List集合方法及遍历过程代码解析

    List 集合的遍历过程可以使用 for 循环来实现。示例代码: ```java List&lt;String&gt; list = new ArrayList(); list.add("hello"); list.add("world"); list.add("java"); for (int i = 0; i &lt; list.size(); i++) { ...

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

    这种方法通过获取集合的Iterator,并在循环中使用`iterator.remove()`方法删除元素,避免了并发修改的问题。 ```java List&lt;CheckWork&gt; list = this.getUserDao().getAll(); Iterator&lt;CheckWork&gt; chk_it = list....

    C#遍历集合与移除元素的方法

    在需要遍历并修改集合时,应避免使用`foreach`,而采用`for`循环或使用辅助集合来确保操作的正确性和效率。在编写代码时,还应考虑使用最新的语言特性,如`RemoveAll()`,以简化代码并提高性能。

Global site tag (gtag.js) - Google Analytics