package yingwu.test.all;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/*
* 为解决www.blogjava.net/chengang关于删除集合中的元素方法而做的试验
* 结论:operate()方法本身没有问题,可以删除掉集合中的数据,但要注意顺序
* 这个函数本身执行是不会 报错的.
* 过程1:
* ........
* Iterator it=list.iterator();
* operate(list);
* while(it.hasNext()){
* System.out.println(it.next());
* }
* ...............................
* 这样确实会报错:
* Exception in thread "main" java.util.ConcurrentModificationException
* at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
* at java.util.AbstractList$Itr.next(Unknown Source)
* at yingwu.test.all.DeleteFromList.main(DeleteFromList.java:30)
* .....................................
* 是因为前面的Iteater引用了这个元素,但被删了.
* 正确的过程应该是:2
* 过程2:
* ..........
* operate(list);
* Iterator it=list.iterator();
* while(it.hasNext()){
* System.out.println(it.next());
* }
* 2008-03-27 13:55 | yingwu
*/
public class DeleteFromList {
public static void main(String[] args){
List l=new ArrayList();
l.add("123");
l.add("456");
operate(l,"123");
Iterator it=l.iterator();
/*while(it.hasNext()){
Object temp=it.next();
String s=(String)temp;
if(temp==s){
System.out.print(true);
}
if(((String)temp).equals("123")){
l.remove(s);
//it.remove();
}
}*/
//it=l.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
public static void operate(List list,String delete){
for (Iterator it = list.iterator(); it.hasNext();) {
String str = (String)it.next();
if (str.equals(delete)){
list.remove(str);
}
}
}
}
分享到:
相关推荐
在本次实验中,我们主要关注了三个主要的集合接口:Set、List和Map,以及它们的一些常见实现类。 1. **Set接口**:Set接口代表了一个不允许有重复元素的集合。实验中提到了两个主要的实现类:HashSet和TreeSet。...
将数组B中的元素逐一与数组B中的元素进行比较,把相同的元素从数组C中删除,数组C便是集合A和集合B的差A-B。 (5)集合的补运算:将数组E中的元素逐一与数组A中的元素进行比较,把不相同的元素保存到数组C中,数组C...
实验目标集中在掌握Python中的两个重要数据结构——字典(Dictionary)和集合(Set)。字典是一种可变容器模型,它以键值对(Key-Value pairs)的形式存储数据,而集合是无序且不重复的元素序列。 **一、字典操作**...
在这个实验中,使用结构体`SeqList`表示顺序表,包含长度`length`和一个大小为`MAXSIZE`的数组`data`来存储元素。 3. **存储结构的设计**: - 选择了顺序表作为存储结构,因为它简单易实现,便于进行插入、删除等...
- **功能**:从集合中删除指定元素。 - **实现**:遍历集合找到目标元素,并修改其前驱节点的指向使其不指向被删除的节点。 #### 7. 添加元素(AddElem) - **功能**:向集合中添加新元素。 - **实现**:如果元素不...
此外,泛型的使用让我们能够指定集合元素的类型,增强了代码的类型安全性和可读性。 总之,Java集合框架是Java编程中不可或缺的一部分,熟练掌握其用法对于提高代码质量和效率至关重要。这次实验为我们提供了宝贵的...
• 抽象的针对不同Java集合实现的比较实验,以找出时间与集合大小之间的关系,以及在检索过程中,从集合中删除元素以及遍历每个集合中的所有元素的过程。 • 方法用数字填充集合,并测量进行散文的时间,然后将结果...
5. **Iterator**: 集合框架中的迭代器接口,用于遍历集合中的元素,提供了`next()`和`remove()`等方法。使用迭代器可以避免`ConcurrentModificationException`。 6. **Collections**: 这是一个包含各种集合操作的...
- Java集合框架提供了一种遍历集合元素的机制,即迭代器。实验中使用了`list.iterator()`获取ArrayList的迭代器,并通过`hasNext()`和`next()`方法遍历并输出元素。 9. **增强型for循环(foreach)**: - 用于...
在实验中,我们实现了顺序表的基本操作,包括初始化顺序表、输出顺序表、查找顺序表中的元素、在顺序表中插入元素、删除顺序表中的元素等。我们还实现了顺序表的合并操作。 二、链表的操作及其应用 链表是一种基本...
cha函数的主要功能是将一个集合中的元素从另一个集合中删除。 调试过程: 在实验过程中,出现了许多错误,例如指针的使用不当、内存的泄露等。通过调试,找到了错误的原因,并对程序进行了修改和优化。 实验结果...
虽然在这个实验中没有直接使用LinkedList,但它是Java集合框架中的重要组成部分。 3. **TreeSet类**:TreeSet是Set接口的一个实现,它维护了一个有序的元素集。TreeSet内部使用了红黑树数据结构,保证了插入、删除...
根据提供的文件信息:“java 实验七 对象集合 实验报告.docx”,虽然描述和标签部分为空,部分内容也未给出具体细节,但可以推测该实验报告主要关注的是Java中的对象集合相关概念和技术。基于这一主题,我们可以展开...
在本实验中,我们将使用顺序表(Sequential List)来实现集合的并、交和差运算。顺序表是一种线性表,其中元素按照它们在内存中的顺序存储。下面我们将详细介绍实验内容和涉及的知识点。 ### 1. 顺序表的基本操作 ...
在实验中,我们创建了一个Queue对象,使用Enqueue方法添加元素,Peek方法查看但不移除队头元素,Dequeue方法则用于移除并返回队头元素。遍历队列展示了队列中所有元素。 3. Stack 栈类: Stack 类实现了后进先出...
- `Iterator`接口用于遍历集合中的元素。它提供了一种方式来访问容器中的元素,而不暴露容器的内部结构。 - `Iterator`的主要优点在于它可以允许在迭代过程中移除元素,这是`Enumeration`接口所不具备的功能。 **2....
在这个实验中,我们将深入理解并掌握这两种数据结构的使用。 首先,字典是Python中的一种可变容器模型,它以键值对(key-value pairs)的形式存储数据。键(key)是唯一的,而值(value)可以重复。字典的创建可以...
在本实验中,我们将基于顺序表(Sequential List)来实现集合的并、交、差运算。顺序表是一种简单的线性数据结构,其中元素按线性顺序存储,通常在数组中实现。以下是对实验内容的详细解释: ### 1. 顺序表的基本...
在这个实验中,集合元素限定为小写字母[a-z]。 2. **顺序表**:顺序表是存储结构的一种,它通过数组来存储元素,便于直接访问和操作。在实验中,使用结构体`struct SET`表示顺序表,包含元素指针`elem`,当前大小`...
- `Input`:从用户输入中读取集合元素。 - `InsertSet`:向集合中插入单个元素。 - `DeleteSet`:从集合中删除指定位置的元素。 - `display`:显示集合内容。 - `SetMix`:计算两个集合的交集、并集或差集。 -...