如何正确使用迭代器
看小东代码前希望大家能把集合框架稍微回顾一下。
如有别的不懂的或者不知道如何写代码的可以下面留言,小东会第一时间为你呈现大致的代码框架。(具体代码还是希望你们自己能够书写)
对于好多初学者而言,不知道如何取使用迭代器甚至都没有听过迭代器,不要一味的取看别人写的东西,要学习如何使用,更重要的是看后能够有一定的代码辅助你进一步的理解,所以小东在这里为初学者准备类一个完整的使用迭代器的代码,保证让你看完能够更加深刻的理解迭代器使用。代码内容要求如下:
- 能够查看所有学生的信息;
- 可以通过学号查看某个学生的信息;
- 可以添加学生信息;
- 可以修改学生的学号(名字年龄一般不允许修改你懂的的,这里只是举例子修改学号,不要钻牛角尖)
- 可以通过学号删除学生信息;
- 具有退出操作
同时比如:登录验证(异常处理),注册信息,才可以进行一切的后续操作等等,都是可以附加上去的,小东写的这个代码比较粗糙,但是供初学者学习还是可以的。感兴趣的可以拷贝代码私下具体化。
在java的集合中要输出这个集合有三种方法,一种是使用for循环,另一种是超级for循环也就是foreach来遍历,还有一种就是使用迭代器Iterator。
什么情况下使用迭代器Iterator呢 ,一般是删除集合中的元素时必须使用迭代器Iterator,删除时集合的长度发生了改变。
创建一个学生类,学生类有自己的属性和方法
/**
*
*/
package com.zhiyou.P;
/**
* @author 小东升职记
*
*/
public class Student implements Comparable<Student> {
private String studyId;
private String name;
private int age;
public String getStudyId() {
return studyId;
}
public void setStudyId(String studyId) {
this.studyId = studyId;
}
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;
}
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String studyId, String name, int age) {
super();
this.studyId = studyId;
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "学生信息 [学号:" + studyId + ", 姓名:" + name + ", 年龄:" + age + "]";
}
@Override
public int compareTo(Student o) {
// TODO Auto-generated method stub
return this.studyId.compareTo(o.studyId);
}
}
创建ManageSystem类
/**
*
*/
package com.zhiyou.P;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
/**
* @author 小东升职记
*
*/
public class ManageSystem {
static List<Student> student = new LinkedList<>();
static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("欢迎进入学生信息管理系统");
student.add(new Student("2015001", "小王", 21));
student.add(new Student("2015002", "小张", 22));
student.add(new Student("2015003", "小李", 20));
operate();
}
public static int operate() {
System.out.println("1.添加 2.修改 3.删除 4.查看某学生 5.查看所有学生信息 6.退出");
int input = scanner.nextInt();
switch (input) {
case 1:
insertOperate();
break;
case 2:
updateOperate();
break;
case 3:
deleteOperate();
break;
case 4:
checkOperate();
break;
case 5:
readOperate();
break;
case 6:
scanner.close();
System.exit(0);
break;
default:
System.out.println("输入无效!");
break;
}
return operate();
}
public static void insertOperate() {
System.out.println("请输入学号:");
String studyId = scanner.next();
System.out.println("请输入姓名:");
String name = scanner.next();
System.out.println("请输入年龄:");
int age = scanner.nextInt();
student.add(new Student(studyId, name, age));
System.out.println("添加成功!");
}
//修改学号
public static void updateOperate() {
System.out.println("请输入原始学号:");
String input = scanner.next();
System.out.println("新学号:");
String newId = scanner.next();
Iterator<Student> iterator = student.iterator();
while (iterator.hasNext()) {
Student student = iterator.next();
if (student.getStudyId().equals(input)) {
student.setStudyId(newId);
System.out.println("修改完毕!");
}
}
}
public static void deleteOperate() {
System.out.println("请输入删除的学号:");
String input = scanner.next();
Iterator< Student> iterator = student.iterator();
while (iterator.hasNext()) {
Student student = iterator.next();
if (student.getStudyId().equals(input)) {
iterator.remove();
System.out.println("删除成功!");
}
}
}
public static void readOperate() {
for (int i = 0; i < student.size(); i++) {
System.out.println(student.get(i));
}
}
public static void checkOperate() {
System.out.println("输入学号查看:");
String string = scanner.next();
Iterator<Student> iterator = student.iterator();
while (iterator.hasNext()) {
Student student = iterator.next();
if (student.getStudyId().equals(string)) {
System.out.println(student);
}
}
}
}