天天看点

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

如何正确使用迭代器

看小东代码前希望大家能把集合框架稍微回顾一下。

      如有别的不懂的或者不知道如何写代码的可以下面留言,小东会第一时间为你呈现大致的代码框架。(具体代码还是希望你们自己能够书写)

       对于好多初学者而言,不知道如何取使用迭代器甚至都没有听过迭代器,不要一味的取看别人写的东西,要学习如何使用,更重要的是看后能够有一定的代码辅助你进一步的理解,所以小东在这里为初学者准备类一个完整的使用迭代器的代码,保证让你看完能够更加深刻的理解迭代器使用。代码内容要求如下:

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