用来遍历List集合的迭代器Iterator:
简单介绍迭代器的使用:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Ch04 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//集合
List list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
//遍历、循环、迭代其实本质差不多
for(int i = 0 ;i < list.size();i++){
//int包装类
int n = (Integer) list.get(i);
System.out.println(n);
}
//Iterator迭代器
//1.获取迭代器
Iterator iter = list.iterator();
//通过循环迭代
//hasNext方法是判断是否存在下一个元素
while(iter.hasNext()){
//next迭代
//Object强转int
//Object --> Integer --> int
int j = (int) iter.next();
System.out.println(j);
}
}
}
迭代器使用实例:
1.定义学生类(Student)保存学生信息,学生信息包括学号(id)、姓名(name)、年龄(age),使用ArrayList来保存学生信息,并迭代输出。
2.以上已经使用ArrayList存储了学员的信息,现在实行修改学员信息,根据输入的学号来进行修改(存入的学号是唯一的),修改后将最新的学员信息输出;如果没有该学员则提示信息。
3.在以上基础上实现删除学员信息,根据输入的学号来进行删除(存入的学号是唯一的),删除后将最新的学员信息输出,如果没有该学员,则提示信息。
Student类
public class Student {
private int id;
private String name;
private int age;
public Student(int id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
StudentManager类
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
public class StudentManager {
private List list=new ArrayList<>();
private Scanner in=new Scanner(System.in);
/**
* 初始化学生信息
*/
public void initData() {
int id=0;
System.out.println("********录入学生信息,当录入的编号为0时,结束录入*********");
while(true) {
System.out.print("请输入学生编号");
id=in.nextInt();
if(id==0) {
break;
}
System.out.print("请输入学生姓名");
String name=in.next();
System.out.print("请输入年龄");
int age=in.nextInt();
Student stu=new Student(id, name, age);
list.add(stu);
}
System.out.println("结束录入!");
}
/**
* 迭代数据
*/
public void iterData() {
System.out.println("学员的信息如下:");
System.out.println("学号\t姓名\t年龄");
Iterator iter=list.iterator();
while(iter.hasNext()) {
Student stu=(Student) iter.next();
System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+stu.getAge());
}
}
public void updateData() {
//判断学生学号是否存在
System.out.print("请输入要修改的学生学号:");
int id=in.nextInt();
//
Iterator iter=list.iterator();
while (iter.hasNext()) {
Student stu = (Student) iter.next();
//判断是否存在该学生
//学生的编号和输入的编号是否相等
if(stu.getId()==id) {
//修改信息
System.out.print("请输入要修改的学员姓名");
stu.setName(in.next());
System.out.print("请输入要修改的学员年龄");
stu.setAge(in.nextInt());
System.out.println("修改成功");
//重新显示学员信息
iterData();
return;
}
}
System.out.println("对不起,没有该学员");
}
public void deleteData() {
//判断学生学号是否存在
System.out.print("请输入要删除的学生学号:");
int id=in.nextInt();
//
Iterator iter=list.iterator();
while (iter.hasNext()) {
Student stu = (Student) iter.next();
//判断是否存在该学生
//学生的编号和输入的编号是否相等
if(stu.getId()==id) {
//删除信息
list.remove(stu);
System.out.println("删除成功");
//重新显示学员信息
iterData();
return;
}
}
System.out.println("对不起,没有该学员");
}
}
Test类
public class StuTest {
public static void main(String[] args) {
StudentManager manager=new StudentManager();
manager.initData();//初始化学生信息
manager.iterData();//显示学生信息
manager.updateData();//更新学生信息
manager.deleteData();//删除学生信息
}
}