如何正确使用疊代器
看小東代碼前希望大家能把集合架構稍微回顧一下。
如有别的不懂的或者不知道如何寫代碼的可以下面留言,小東會第一時間為你呈現大緻的代碼架構。(具體代碼還是希望你們自己能夠書寫)
對于好多初學者而言,不知道如何取使用疊代器甚至都沒有聽過疊代器,不要一味的取看别人寫的東西,要學習如何使用,更重要的是看後能夠有一定的代碼輔助你進一步的了解,是以小東在這裡為初學者準備類一個完整的使用疊代器的代碼,保證讓你看完能夠更加深刻的了解疊代器使用。代碼内容要求如下:
- 能夠檢視所有學生的資訊;
- 可以通過學号檢視某個學生的資訊;
- 可以添加學生資訊;
- 可以修改學生的學号(名字年齡一般不允許修改你懂的的,這裡隻是舉例子修改學号,不要鑽牛角尖)
- 可以通過學号删除學生資訊;
- 具有退出操作
同時比如:登入驗證(異常處理),注冊資訊,才可以進行一切的後續操作等等,都是可以附加上去的,小東寫的這個代碼比較粗糙,但是供初學者學習還是可以的。感興趣的可以拷貝代碼私下具體化。
在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);
}
}
}
}