方法一
ArrayList<String> list = new ArrayList<String>();
list.add("one");
list.add("two");
list.add("two");
list.add("two");
list.add("two");
for(int i=0;i<list.size();i++){
if(list.get(i).equals("two")){
list.remove(i);
}
}
System.out.println(list);
结果:
[one, two, two]
方法二
ArrayList<String> list = new ArrayList<String>();
list.add("one");
list.add("two");
list.add("two");
list.add("two");
list.add("two");
for(String s:list){
if(s.equals("two")){
list.remove(s);
}
}
System.out.println(list);
结果:
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at java.util.AbstractList$Itr.next(AbstractList.java:343)
at Test.main(Test.java:22)
方法三:
ArrayList<String> list = new ArrayList<String>();
list.add("one");
list.add("two");
list.add("two");
list.add("two");
list.add("two");
Iterator<String> iter = list.iterator();
while(iter.hasNext()){
String s = iter.next();
if(s.equals("two")){
iter.remove();
}
}
System.out.println(list);
结果:
[one]
结论:
删除还是用迭代器的比较好,其它的都会有问题.
分享到:
相关推荐
然而,在遍历 ArrayList 时,如果需要删除某些元素,可能会遇到 ConcurrentModificationException 异常。今天,我们将讨论如何正确地遍历和修改 ArrayList。 遍历 ArrayList 的正确方法 在遍历 ArrayList 时,不能...
- 遍历ArrayList时,使用迭代器通常比索引遍历效率更高,因为迭代器避免了对size()的重复计算。 - 对于大规模数据的增删操作,考虑使用LinkedList,因为ArrayList的插入和删除操作在中间位置时效率较低。 了解并...
ArrayList通过数组来存储元素,因此可以快速访问任意位置的元素,但插入和删除元素时可能需要移动其他元素,这可能导致性能下降。 在JNI中操作ArrayList,我们需要做以下几步: 1. **创建JNI函数**:在C/C++代码中...
- `ConcreteAggregate`类使用`LinkedList`作为其内部数据结构,因为`LinkedList`提供了快速的插入和删除操作,这在迭代器模式中可能不那么关键,但在其他场景下可能是有益的。 - 在主类`Client`中,首先创建了一个`...
ArrayList的优点在于其灵活性,可以存储任意类型的对象,但缺点是插入和删除元素时可能需要进行大量的元素移动,这在遍历过程中会影响性能。 其次,`Dictionary, TValue>`是一个键值对的集合,基于哈希表实现。它的...
在Java编程中,集合类遍历的同时进行删除操作是一个常见的需求,但如果不正确地执行,可能会导致`ConcurrentModificationException`。这个问题主要出现在迭代器正在遍历集合时,集合本身被修改的情况。以下是对这个...
总结来说,这个示例展示了如何在Java中创建一个包含自定义对象的ArrayList,如何向ArrayList中添加和删除元素,以及如何安全地遍历ArrayList并访问其元素。在实际开发中,了解这些基本操作对于处理动态数据集至关...
`<c:forEach>`标签用于遍历任何可迭代的数据源,如ArrayList、LinkedList、HashMap等。其基本语法如下: ```jsp <!-- 在这里处理每项元素 --> ``` - `items`:指定要遍历的集合或数组。 - `var`:定义一个变量...
首先,我们需要创建一个ArrayList类,这个类将包含添加、删除、查找、更新和遍历元素等基本操作。由于JavaScript的Array对象已经提供了这些功能,我们可以通过扩展Array原型来创建ArrayList。 ```javascript ...
同时,优化的方法也使用了迭代器遍历ArrayList中的元素,而不是使用循环遍历。这也提高了方法的执行速度。 ArrayList的removeAll方法是一个非常有用的集合操作方法,但是需要 thận重使用,以免导致性能问题。在...
六、遍历ArrayList 1. for-each循环:`for (E e : list) { ... }` 2. Iterator迭代器:`Iterator<E> iterator = list.iterator(); while (iterator.hasNext()) { E e = iterator.next(); ... }` 七、ArrayList的...
ArrayList对象是一个非常基础且灵活的集合类,它允许程序员在运行时添加、删除和访问元素,而无需预先确定数组的大小。下面将详细介绍ArrayList对象的特性、操作方法以及在实际开发中的应用。 1. ArrayList对象的...
通过上述知识点的学习,我们可以掌握ArrayList集合的基本使用,包括创建集合、添加、删除、修改以及遍历集合元素等操作,能够针对具体的需求来编写相应的Java程序代码。此外,使用泛型来约束集合中的数据类型是提高...
**错误的遍历删除方式** 错误的示例代码如下: ```java Set<CheckWork> set = this.getUserDao().getAll().get(0).getActionCheckWorks(); for (CheckWork checkWork : set) { if (checkWork.getState() == 1) { ...
然而,在遍历过程中直接修改`ArrayList`(如删除元素)可能会引发`IndexOutOfBoundsException`等异常。 #### 错误示例分析 以下是一种常见的错误操作方式: ```java for (int i = 0; i (); i++) { if (list.get...
Java是一种编程语言,被特意设计用于互联网的分布式环境。Java具有类似于C++语言的“形式和感觉”,但它要比C++语言更易于使用,而且在编程时彻底采用了一种“以对象为导向”的方式。 使用Java编写的应用程序,既...
5. 显示所有学生信息:遍历ArrayList并打印每个学生的属性。 6. 学生排序:使用Collections工具类的`sort()`方法,可以对ArrayList进行排序,如按照学号升序排列。 在实践中,为了提高代码的可读性和可维护性,我们...
- **遍历**:遍历ArrayList的元素效率高,因为可以通过索引直接访问。 总结来说,ArrayList是Java中一个重要的动态数组实现,它的优点在于提供了高效的随机访问和修改,但在插入和删除元素时,特别是当元素位于...
在多线程环境下,如果一个线程正在遍历ArrayList,而另一个线程同时修改了ArrayList的结构(例如添加或删除元素),可能会导致两种不同的行为。"安全失败"允许遍历继续,但返回的结果可能不正确,因为遍历的是...