天天看點

如何正确使用疊代器如何正确使用疊代器

如何正确使用疊代器

看小東代碼前希望大家能把集合架構稍微回顧一下。

      如有别的不懂的或者不知道如何寫代碼的可以下面留言,小東會第一時間為你呈現大緻的代碼架構。(具體代碼還是希望你們自己能夠書寫)

       對于好多初學者而言,不知道如何取使用疊代器甚至都沒有聽過疊代器,不要一味的取看别人寫的東西,要學習如何使用,更重要的是看後能夠有一定的代碼輔助你進一步的了解,是以小東在這裡為初學者準備類一個完整的使用疊代器的代碼,保證讓你看完能夠更加深刻的了解疊代器使用。代碼内容要求如下:

  1. 能夠檢視所有學生的資訊;
  2. 可以通過學号檢視某個學生的資訊;
  3. 可以添加學生資訊;
  4. 可以修改學生的學号(名字年齡一般不允許修改你懂的的,這裡隻是舉例子修改學号,不要鑽牛角尖)
  5. 可以通過學号删除學生資訊;
  6. 具有退出操作

      同時比如:登入驗證(異常處理),注冊資訊,才可以進行一切的後續操作等等,都是可以附加上去的,小東寫的這個代碼比較粗糙,但是供初學者學習還是可以的。感興趣的可以拷貝代碼私下具體化。

      在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);
			}
			
		}
		
	}
}