`

关于List 数组Remove IndexOutOfBoundsException

    博客分类:
  • Java
阅读更多
List<String> list = new ArrayList<String>;
list.add(....);
for (int i=0; i<list.size(); i++) {
    if (expression) {
        list.remove(i); // or list.remove(list.get(i));
    }
}

then....throw IndexOutOfBoundsException
这个问题主要是在循环中删除数组元素导致的,碰到过两次了,记录一下几种解决方法。

1.将判断条件与数组长度分离
int fooLen = list.size();
for (int i=0; i<fooLen; i++) {
    if (expression) {
        list.remove(i); // or list.remove(list.get(i));
        fooLen--;
    }
}

2.大家普遍都会想到的方法,就是把要删除的元素保存起来,然后调用list.removeALL() 方法。// 具体写法略

3.使用Iterator 数组迭代器
for (Iterator<String> i=list.iterator(); i.hasNext(); ) {
    i.next();
    if (expression) {
        i.remove();
    }
}


三种方法,第一种直接操作数组元素,效率比较高;第二种比较费资源;第三种比较简单。
分享到:
评论

相关推荐

    list常用方法

    list.remove(index); ``` `remove(index)`方法移除列表中指定位置`index`的元素,并返回被移除的元素。同样需要注意索引的有效范围。 #### 5. 替换元素 ```java list.set(index, e); ``` `set(index, e)`方法将列表...

    数组模仿ArrayList

    在Java编程语言中,ArrayList是集合框架中的一种重要数据结构,属于List接口的实现类。它内部基于动态数组实现,提供了灵活的增删改查功能,同时保持了元素的有序性。本篇将深入探讨如何使用数组来模仿ArrayList的...

    Java-Mail-list.zip_JAVA list通讯录

    3. **ArrayList类**:ArrayList是一个基于数组实现的List,内部使用动态增长的Object数组来存储元素。它的主要方法包括add()(添加元素)、remove()(删除元素)、contains()(判断是否包含指定元素)和get()(获取...

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

    它实现了`List`接口,提供了动态数组的功能。在实际开发过程中,经常需要遍历`ArrayList`并删除其中满足某些条件的元素。然而,在遍历过程中直接修改`ArrayList`(如删除元素)可能会引发`IndexOutOfBoundsException...

    Java编程常用方法

    list.remove(0); // list 的元素为 ["banana"] 这些方法可以帮助开发者快速地处理数据,提高开发效率和代码质量。但需要注意的是,在使用 ArrayList 类时需要注意索引越界和空指针异常的问题。

    java中List的用法.pdf

    - `remove(int index)`:移除列表中指定索引处的对象,并返回被移除的对象。 - `size()`:返回列表中元素的数量。 - `iterator()`:返回一个迭代器,可以用来遍历列表中的元素。 2. **ArrayList和LinkedList的...

    java ArrayList的使用与分析

    - **删除元素**:`list.remove(index)` 或 `list.remove(element);` - **访问元素**:`list.get(index);` - **遍历元素**:可以使用 `for-each` 循环或迭代器进行遍历。 - **修改元素**:`list.set(index, ...

    arrayliSt---listDemo

    list.remove("NewElement2"); // 移除值为"NewElement2"的元素 ``` 5. **迭代遍历** ArrayList支持迭代器`Iterator&lt;E&gt; iterator()`进行遍历,也可以使用增强型for循环(foreach): ```java Iterator&lt;String&gt; ...

    Remove-item-from-list:一个简单的Java程序,用于从字符串列表中删除选定的字符串

    在Java编程语言中,"Remove-item-from-list"是一个常见的任务,尤其在处理数据结构如数组、集合或列表时。这个程序提供了一个简单的解决方案,帮助开发者从字符串列表中删除指定的元素。下面我们将深入探讨这个话题...

    ArrayList源码分析

    `ArrayList` 是 Java 集合框架中的一个重要的类,它实现了 `List` 接口,并且内部使用动态数组来存储元素。由于其灵活的特性(比如可以方便地增加或删除元素),`ArrayList` 成为了开发中最常用的集合类型之一。 ##...

    ArrayList删改查方法.pdf

    ArrayList是Java编程语言中常用的动态数组,它实现了List接口,提供了丰富的操作方法,适用于需要频繁进行增删改查操作的场景。以下将详细介绍ArrayList的“删改查”方法及其内部原理。 1. 获取元素(Get) ...

    android代码实例

    - 空指针异常:访问不存在的索引会抛出`IndexOutOfBoundsException`,所以在操作ArrayList时需要确保索引有效。 - 容量规划:为了提高性能,可以根据预期大小初始化ArrayList,避免频繁扩容。 - 同步问题:在多...

    java中的线性表

    public int remove(int index) { if (index || index &gt;= size) { throw new IndexOutOfBoundsException("Index out of bounds"); } int removedElement = elements[index]; for (int i = index; i ; i++) { ...

    java代码-使用集合ArrayList对字符串进行存储和管理

    ArrayList是Java集合框架中的一个重要类,属于List接口的实现,它提供了动态数组的功能,允许我们在运行时添加、删除和修改元素。本篇文章将深入讲解如何使用ArrayList对字符串进行存储和管理。 一、ArrayList简介 ...

    array-list1

    10. **异常处理**:ArrayList的某些操作,如add()、remove()和set(),如果索引超出范围,会抛出IndexOutOfBoundsException。此外,尝试向空ArrayList添加元素时不会抛出NullPointerException,但如果尝试访问或修改...

    集合ArrayList测试集合ArrayList测试集合ArrayList测试

    5. **方法操作**:`ArrayList`提供了丰富的API,包括`add()`(添加元素)、`remove()`(移除元素)、`get()`(获取指定索引的元素)、`set()`(替换指定索引的元素)、`size()`(返回元素数量)以及`clear()`(清除...

    List-Implementation:我自己的列表抽象数据类型的实现

    `List`接口提供了如`add(E element)`、`remove(int index)`、`get(int index)`、`size()`等方法。常见的`List`实现有`ArrayList`和`LinkedList`,它们分别基于动态数组和链表实现,有着不同的性能特性。 在作者的...

    java代码-使用集合ArrayList对字符串进行存储和管理。

    或者通过`remove(Object)`方法删除特定值的元素,如`list.remove("World");`。 7. 遍历ArrayList 遍历ArrayList通常有两种方式:迭代器和增强型for循环(foreach)。迭代器示例:`Iterator&lt;String&gt; it = list....

    day09-ArrayList集合&学生管理系统1

    在Java编程中,ArrayList是集合框架中的一员,它属于List接口的实现类,主要用于存储有序的、可重复的对象。ArrayList的核心特点是其内部基于动态数组实现,允许我们在任意位置插入和删除元素,同时提供了丰富的操作...

Global site tag (gtag.js) - Google Analytics