怎么使用Iterator迭代器进行遍历集合对象
时间: 2023-07-05 16:18:49 浏览: 120
使用Iterator迭代器遍历集合对象的步骤如下:
1. 通过集合对象的iterator()方法获取Iterator迭代器对象,如下所示:
```
List<String> list = new ArrayList<>();
Iterator<String> iterator = list.iterator();
```
2. 使用while循环遍历集合对象,每次使用hasNext()方法判断是否还有下一个元素,如果有则使用next()方法获取下一个元素,如下所示:
```
while(iterator.hasNext()) {
String element = iterator.next();
// 进行相关操作
}
```
3. 如果需要在遍历过程中移除元素,可以使用Iterator的remove()方法,如下所示:
```
while(iterator.hasNext()) {
String element = iterator.next();
if (需要移除该元素) {
iterator.remove();
}
}
```
需要注意的是,使用Iterator迭代器遍历集合对象时,不能在遍历过程中使用集合的add()、remove()等方法对集合进行修改,否则会抛出ConcurrentModificationException异常。
相关问题
使用java语言定义Person 类,类中包含私有属性姓名 name 和身份证号id,在 TreeSet 集合中添加三个 Person 对象,以id 比较大小的结果作为 Person 对象比较结果,并使用 Iterator 迭代器遍历输出集合中的对象,将遍历的对象写入到以姓名首字母命名的文本文件中。正确用 try...catch...finally 处理异常。
好的,这是一个Java语言定义Person类的示例,以及使用TreeSet集合添加Person对象并将遍历的对象写入到文本文件中的示例代码:
```java
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.TreeSet;
public class Person implements Comparable<Person> {
private String name;
private String id;
public Person(String name, String id) {
this.name = name;
this.id = id;
}
public String getName() {
return name;
}
public String getId() {
return id;
}
@Override
public int compareTo(Person person) {
return this.id.compareTo(person.id);
}
public static void main(String[] args) {
// 创建TreeSet集合
TreeSet<Person> personSet = new TreeSet<>();
// 向集合中添加Person对象
personSet.add(new Person("张三", "210000199001011234"));
personSet.add(new Person("李四", "210000199002012345"));
personSet.add(new Person("王五", "210000199003023456"));
// 遍历集合并将对象写入文本文件
BufferedWriter writer = null;
try {
Iterator<Person> iterator = personSet.iterator();
while (iterator.hasNext()) {
Person person = iterator.next();
String fileName = person.getName().substring(0, 1) + ".txt";
writer = new BufferedWriter(new FileWriter(fileName, true));
writer.write(person.getName() + " " + person.getId() + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (writer != null) {
writer.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
在上面的示例中,我们定义了一个Person类,其中包含了姓名和身份证号两个私有属性,并实现了Comparable接口中的compareTo方法,以id比较大小的结果作为Person对象比较结果。
接着,我们创建了一个TreeSet集合,并向集合中添加了三个Person对象。然后,使用迭代器遍历集合中的对象,并根据姓名首字母命名的规则将遍历的对象写入到文本文件中。在写入文件的过程中,我们使用了try...catch...finally语句块来正确处理可能出现的异常,以保证程序的健壮性。
Iterator迭代器对象在遍历集合时,内部采用指针的方式来跟踪集合中的元素。指针初始状态指向第一个元素。
在 Java 中,Iterator 迭代器对象在遍历集合时,内部并不是采用指针的方式来跟踪集合中的元素,而是通过 hasNext() 和 next() 方法来实现的。指针的初始位置是在第一个元素之前的位置,当调用 next() 方法时,指针会移动到下一个元素的位置上,并返回该元素的值,如果下一个元素不存在,则会抛出 NoSuchElementException 异常。而在遍历结束后,指针的位置会移动到集合的末尾,也就是最后一个元素之后的位置。因此,在使用 Iterator 迭代器遍历集合时,需要使用 hasNext() 方法来检查是否还有下一个元素,以避免 NoSuchElementException 异常的发生。
阅读全文