`
Max_1106
  • 浏览: 21742 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类

删除集合中的某些元素

阅读更多
经常我们要删除集合中的某些元素。有些可能会这么写。
   
  public void operate(List list){
        for (Iterator it = list.iterator(); it.hasNext();) {
            String str =  (String)it.next();
            if (str.equals("chengang")){
                list.remove(str);
            }
        }
    }
   
  这种写法一运行就会报如下异常:
 
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:449)
 
  因为list在循环中的时候是不可以删除它的元素的。后来我是这样做的,一种很笨的方法,思路是这样的:创建一个List专门存放要被删除的元素,循环过后,用List.removeAll方法把元素删除。代码如下:
    public void operate(List list){
        List removeList= new ArrayList();
        for (Iterator it = list.iterator(); it.hasNext();) {
            String str =  (String)it.next();
            if (str.equals("chengang")){
                removeList.add(str);
            }
        }
        list.removeAll(removeList);
    } 
  这样也确实可以解决问题了,但是方法实在太笨重,其实可以有更简单的更高效的方法,就是用Iterator.remove方法,如下:
        for (Iterator it = list.iterator(); it.hasNext();) {
            String str =  (String)it.next();
            if (str.equals("chengang")){
                it.remove();
            }
        }

 所以,你对Java的基础知识了解越多,代码就会写得越简洁。相反如果你的代码特别复杂,则方法或设计一定有问题。
分享到:
评论

相关推荐

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

    1. 避免在正序遍历过程中删除元素,以免跳过某些元素。 2. 使用倒序遍历可以解决删除元素后跳过问题,但效率较低。 3. 考虑使用Linq表达式,尤其是当需要大量删除时,以提高性能。 希望以上内容对你的C#程序设计...

    在list集合中输入元素,去除重复的元素并输出

    根据给定文件的信息,本文将详细介绍如何在Java的List集合中去除重复元素的三种方法:使用for循环、使用迭代器以及利用HashSet的特性。 ### 一、使用for循环去除重复元素 这种方法的基本思想是通过双重循环来遍历...

    删除数组中的元素vb6

    当需要从数组中移除某个元素时,通常需要采用一定的策略来实现这一操作,因为VB6的数组是静态的,不像某些现代编程语言那样支持动态调整大小或直接删除元素。以下是一些关于如何在VB6中删除数组元素的知识点: 1. *...

    删除JAVA集合中元素的实现代码

    有时候,我们需要删除集合中的某些元素,那么就可以参考下面的代码。 在 Java 中,集合是不能在遍历时删除元素的。因为 List 在循环中的时候是不可以删除它的元素的。如果我们尝试删除集合中的元素,会抛出 ...

    实现Java删除一个集合的多个元素

    在尝试使用`for each`循环遍历并删除`source`集合中某些元素时,程序抛出了`ConcurrentModificationException`。这是因为Java的`for each`循环实际上是基于`Iterator`的。当使用`Iterator`遍历集合时,Java不允许...

    不改变长度删除数组中的元素

    5. **重写数组**:在某些情况下,如果内存不是主要考虑因素,可以创建一个新的数组,只复制未被删除的元素到新数组中,保持原有的顺序。这种方式实际上改变了数组,但可以快速地“删除”元素。 以上就是“不改变...

    java集合框架图 (清晰表明集合之间的关系)

    组操作包括 boolean containsAll(Collection c) 查找集合中是否含有集合 c 中所有元素、boolean addAll(Collection c) 将集合 c 中所有元素添加给该集合、void clear() 删除集合中所有元素、void removeAll...

    java集合类arraylist循环中删除特定元素的方法.docx

    在实际开发过程中,经常需要遍历`ArrayList`并删除其中满足某些条件的元素。然而,在遍历过程中直接修改`ArrayList`(如删除元素)可能会引发`IndexOutOfBoundsException`等异常。 #### 错误示例分析 以下是一种...

    集合的概念(英文版)PPT课件

    集合的定义如下:讨论的对象称为元素,而某些元素的集合被称为集合。通常,集合用大写字母表示,如A, B, C等;元素用小写字母表示,如a, b, c等。我们使用特殊符号"x∈S"表示“x是集合S的元素”,若x不属于S,则表示...

    66丨迭代器模式(中):遍历集合的同时,为什么不能增删集合元素?1

    如果在遍历过程中删除元素"a",由于ArrayList的删除操作会移动后面的元素来填补空位,原本指向元素"b"的游标在删除操作后实际上会指向元素"c"。这就导致元素"b"无法被遍历到,而"b"和"c"之间的关系并未改变,导致...

    Java 实例 - 集合中添加不同类型元素源代码+详细指导教程.zip

    但在某些情况下,我们需要在同一个集合中存放不同类型的元素,这时可以使用`ArrayList<Object>`或者不指定泛型,但这会牺牲类型检查。 3. **ArrayList示例** `ArrayList`是基于动态数组实现的,它支持快速的随机...

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

    例如,在列表中删除所有的某个元素,如果从头到尾遍历删除,可能会遗漏某些元素。解决这个问题的方法是使用for循环,并且从尾到头遍历循环。 ```csharp List<string> tempList = new List() { "a","b","b","c" }; ...

    java基础之集合

    - **remove()**:从集合中删除上一个由 `next()` 返回的元素。 ##### 2.3 List 功能方法 - **List**:列表保持元素的插入顺序,可以包含重复的元素。 - **ArrayList**:基于动态数组实现的列表,提供了快速随机...

    ArrayList删除集合中某一属性相同的元素方法(推荐)

    本篇文章将介绍如何使用ArrayList删除集合中具有相同特定属性(例如:destip)的元素。 首先,当我们的目标是确保集合中没有重复的元素时,HashSet是一个更好的选择,因为它在内部使用哈希表来存储元素,不允许有...

    集合运算器

    在实现集合运算器时,开发者可能选择了链表作为基础数据结构,因为链表允许高效地添加和删除元素,尤其是当元素数量变化时。链表由节点组成,每个节点包含数据和指向下一个节点的引用。这使得插入和删除操作的时间...

    1.从集合当中读取数据(2)(2).rar

    - 更新元素:集合中某些元素可能需要被修改,如通过索引或键进行更新。 - 合并与交集:union、intersection操作用于合并两个集合或将它们的交集存入新集合。 7. 性能考虑: - 时间复杂度:了解每个操作的时间...

    C++语言交并差集合运算

    在数学中,集合是指具有某些特定性质的事物的总体。集合中的元素是互不相同的,且无顺序之分。集合可以为空或包含任意数量的元素。 #### 2. 集合的运算 集合运算主要包括交集、并集和差集: - **交集**:两个集合的...

    集合的交、并和差运算的实现

    1. **集合的交集**:两个集合的交集包含同时存在于这两个集合中的所有元素。例如,集合A = {1, 2, 3} 和集合B = {2, 3, 4} 的交集是 {2, 3}。 2. **集合的并集**:两个集合的并集包含所有存在于任一集合中的元素,...

    Chapter6 集合与字典1

    在某些情况下,为了方便表示和操作,可能会给集合中的元素赋予一个线性顺序,比如整数、字符和字符串的自然顺序。对于指针,可以通过它们在内存中的位置来确定顺序。 **集合的基本操作** 集合抽象数据类型(ADT)...

    java集合类的全解

    迭代器提供了一系列方法,如 `hasNext()` 和 `next()` 来遍历集合中的元素。此外,还可以通过 `remove()` 方法从集合中移除当前元素。 - **泛型**:在Java集合中广泛使用泛型来提高代码的安全性和可读性。通过指定...

Global site tag (gtag.js) - Google Analytics