【面向對象版】HashMap(增刪改查)

前言:java

關於什麼是HashMap,HashMap能夠用來作些什麼,這些定義類的描述,請參照【簡易版】HashMap(增刪改查)的內容。數據庫

這章節主要是面向實例,直接進行HashMap(增刪改查)的演示。廢話很少說,讓咱們逐一看一下下面的代碼。框架

一, HashMap前期準備:eclipse

1. student類的建立ide

package com.java.demo_9;

/**
 * Student類
 * @author liupeng
 *
 */
public class Student {
    
    private String stuName;
    private String classCord;
    private String stuNumber;
    public String getStuName() {
        return stuName;
    }
    public void setStuName(String stuName) {
        this.stuName = stuName;
    }
    public String getClassCord() {
        return classCord;
    }
    public void setClassCord(String classCord) {
        this.classCord = classCord;
    }
    public String getStuNumber() {
        return stuNumber;
    }
    public void setStuNumber(String stuNumber) {
        this.stuNumber = stuNumber;
    }
    public Student() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Student(String stuName,String stuNumber,String classCord) {
        super();
        this.stuName = stuName;
        this.classCord = classCord;
        this.stuNumber = stuNumber;
    }
    @Override
    public String toString() {
        return "學員名稱:" + stuName + ", 學員編號:"
        + stuNumber + ", 班級番號:" + classCord;
    }
    
    

}
Student類

2.studentservices類框架的建立函數

package com.java.demo_9;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;

public class HashMapServices {
    /**
     * 思路:
     * (1)如下全部方法都必須基於有數據的狀況下方可進行.所以首先要考慮的是數據的添加.
     * (2)數據添加要麼存儲在數據庫中,要麼外部 磁盤中,要麼本地類中.(本章範例是列舉本地類中的存放方法)
     * (3)既然存放本地類,那麼就須要先定義一個存放地址.下面是經過HashMap存放方法進行演示.
     * (4)建立類時初始化數據
     */
    private HashMap students = null; 
    //初始化數據
    public HashMapServices(){
        students = new HashMap();
    }
    
    /**
     * 根據學生姓名獲取一個學生信息
     * (註釋:由於用的是HashMap存儲數據,所以stuName惟一,因此經過姓名查找精確度高)
     * 強調:要想獲取首先要先有數據才能夠,所以首先參考追加類而後再來看獲取
     * @param name  學生姓名
     * @return
     */
    public Student getStudentByName(String name){
        if(students != null && students.size()>0){
            //.get(name)實際上就是獲取stuName.獲取的是students列表中的信息.
            Student student = (Student)this.students.get(name);
            return student;
        }
        return null;
    }
    /**
     * 根據班級編號分類查找學員信息
     * (註釋:由於classCord是可能重複的,所以返回信息應該是經過一個列表進行接收,所以這裏定義ArrayList進行接收.)
     * @param classNo  班級編號
     * @return         集合
     */
    public ArrayList getStudentByClassCord(String classNo){
        ArrayList result = new ArrayList();
        for(Object key:this.students.keySet()){
            Student obj =(Student)this.students.get(key);
            System.out.println(obj);
            if(obj.getClassCord().contains(classNo)){
                result.add(obj);
            }
        }
        return result;
    }
    /**
     * 根據學員編號來查找學員信息
     * (註釋:同上.由於stuNo也是有可能重複的,所以返回信息應該也是經過一個列表進行接收,所以這裏定義ArrayList進行接收.)
     * @param stuNo
     * @return
     */
    public ArrayList getStudentByStudentNo(String stuNo){
        ArrayList result1 = new ArrayList();
        for(Object key:this.students.keySet()){
            Student obj =(Student)this.students.get(key);
            System.out.println(obj);
            if(obj.getStuNumber().contains(stuNo)){
                result1.add(obj);
            }
        }
        return result1;
    }
    
    /**
     * 根據輸入的學員編號和教師編號,查找相同窗員編號和相同教室編號的學員信息
     * @param stuNo
     * @param classNo
     * @return
     */
    public ArrayList getStudentNoEqulesClassNo(String stuNo,String classNo){
        ArrayList result2 = new ArrayList();
        for(Object key:this.students.keySet()){
            Student obj =(Student)this.students.get(key);
            System.out.println(obj);
            if(obj.getStuNumber().contains(stuNo)&& obj.getClassCord().contains(classNo)){
                result2.add(obj);
            }
        }
        return result2;
    }
    
    
    /**
     * 獲取全部學生信息
     * (1)經過HashMap版本獲取
     * (2)經過ArrayList版本獲取
     * @return
     */
    public HashMap getAllStudent_HashMap(){
        return this.students;
    }
    
    public ArrayList getAllStudent_ArrayList(){
        ArrayList result = new ArrayList();
        for(Object key:this.students.keySet()){
            Student obj =(Student)this.students.get(key);
            result.add(obj);
        }return result;
    }
    
    /**
     * 添加一個學生(面對對象版)
     * @param student
     */
    public void addStudent(Student student){
        students.put(student.getStuName(), student); //key爲StuName,value爲addStudent方法中的變量
        
    }
    /**
     * 重載
     * @param stuName    學生姓名
     * @param stuNumber  學員編號
     * @param classCord  班級編號
     */
    public void addStudent(String stuName,String stuNumber,String classCord){
        Student student = new Student();   //調用Student類
        this.addStudent(student); //直接addStudent這個類中的方法.
        
    }
    
    /**
     * 刪除一個學生(面對對象版)
     * @param student
     */
    //直接調用下面的方法進行刪除
    public boolean delStudent(Student student){
        String stuName =student.getStuName();//也是經過StuName來進行刪除,先獲取到StuName
        return this.delStudent(stuName); //經過調用delStudent方法來執行刪除操做
    }
    /**
     * 經過stuName刪除
     * @param stuName
     */
    public boolean delStudent(String stuName){
        //先判斷students列表中有沒有數據後再刪除
        Scanner input = new Scanner(System.in);
        if(students != null && students.size()>0){
            /**
             * 判斷有沒有這個學生.找到後再刪除
             */
            Student student = this.getStudentByName(stuName);
            if(student == null){
                return false;
                }
            System.out.println("您肯定要刪除該學員信息嗎? [肯定]:y,[取消]:n");
            
            String isok = input.next();
            if(isok.equals("y")){
            this.students.remove(stuName);
            return true; //對於刪除的結果給一個返回值
            }
        }
        return false;  //沒找到對象給返回值
    }
    /**
     * 修改一個學生(面向對象版)
     * @param student
     */
    public boolean updateStudent(Student student){
        if(students != null && students.size()>0){
            /**
             * 判斷有沒有這個學生.找到後再變動
             */
            Student studen = this.getStudentByName(student.getStuName());
            if(studen == null){
                return false;
            }
            this.students.put(student.getStuName(), student);
            return true; //對於刪除的結果給一個返回值
        }
        return false;  //沒找到對象給返回值
    }
    /**
     * 重載
     * @param stuName
     * @param stuNumber
     * @param classCord
     */
    public boolean updateStudent(String stuName,String stuNumber,String classCord){
        Student student = this.getStudentByName(stuName);
        student.setStuNumber(stuNumber);
        student.setClassCord(classCord);        
        return updateStudent(student);
    }
}
HashMapServices類

二,對studentservices類的逐斷代碼分析測試

段落1:數據初始化this

思路註釋:spa

任何數據都須要一個地方來進行存儲。通常狀況下數據會存放在內存,本地磁盤,外部磁盤(存儲),數據庫中。由於咱們還未涉及到數據庫等方面的講解,所以如下案例是按照存放在系統內存的方式進行存放的。3d

private HashMap students = null;    //是表明建立一個HashMap,變量爲students,內容爲空。

public HashMapServices(){ students = new HashMap(); }   //是表明初始化這個空字典

/**
	 * 思路:
	 * (1)如下全部方法都必須基於有數據的狀況下方可進行.所以首先要考慮的是數據的添加.
	 * (2)數據添加要麼存儲在數據庫中,要麼外部 磁盤中,要麼本地類中.(本章範例是列舉本地類中的存放方法)
	 * (3)既然存放本地類,那麼就須要先定義一個存放地址.下面是經過HashMap存放方法進行演示.
	 * (4)建立類時初始化數據
	 */
	private HashMap students = null; 
	//初始化數據
	public HashMapServices(){
		students = new HashMap();
	}

 段落2:添加學員信息

思路註釋:空字典咱們已經在上述建立好了,爲了增刪改查的操做首先要向空字典中傳入數據。下面提供2個方法來對空字典進行賦值追加。

students.put(student.getStuName(), student); // (1)students爲空列表。(2).put在這裏爲添加,添加內容是先獲取到StuName()後再添加。緣由是StuName爲key,key在字典中惟一。(3)student爲參數(也就是字典中value的值)

重載部分:對於每一個構造函數都不該該只有一種方法。這裏是把Student類中重載所設定的3個參數,做爲另外一種方法來建立實例。

/**
	 * 添加一個學生(面對對象版)
	 * @param student
	 */
	public void addStudent(Student student){
		students.put(student.getStuName(), student); //key爲StuName,value爲addStudent方法中的變量。(經過stuName來進行獲取)
		
	}
	/**
	 * 重載
	 * @param stuName    學生姓名
	 * @param stuNumber  學員編號
	 * @param classCord  班級編號
	 */
	public void addStudent(String stuName,String stuNumber,String classCord){
		Student student = new Student();   //調用Student類
		this.addStudent(student); //直接addStudent這個類中的方法.
		
	}

 段落3:獲取學員信息

註釋:說完了添加,再來看看獲取。要知道獲取信息對於「增刪改查「來講,除了添加之外其餘方法都須要涉及到的。無論你對數據作任何的更改,首先都必需要先獲得要更改的數據才能夠進行下一步的操做。因此對於獲取而言尤其的重要,也是相對比較複雜的部分。下面咱們分了多種狀態(多態)來逐一模擬現實中須要獲取學員信息時所須要的各類方法。一塊兒來看一下代碼。

(1)經過學員姓名進行獲取

通常這種獲取方式是最多見也是最廣泛的。例如咱們的手機通信錄中就是如此,當咱們想知道一我的的電話或者地址信息時,只要記住他的名字或者說暱稱。就能夠經過姓名查詢的方式直接找到他的電話或地址。那麼咱們下面的這個例子也是同樣。經過學員的姓名直接找到他所在的班級以及他對應的學員編號。

思路註釋:

<1> 建立一個getStudentByName的構造方法,傳參(爲姓名)。

<2> if(students != null && students.size()>0)  //首先先判斷一下students這個字典是否爲空。由於上面咱們已經追加了數據因此這裏確定不爲空。可是做爲代碼的嚴禁要求而言,應該有這麼一條判斷存在。

<3>  Student student = (Student)this.students.get(name);  //經過建立Student類實例,來調用student類中的.get()方法。這裏的name其實就是stuName.

	/**
	 * 根據學生姓名獲取一個學生信息
	 * (註釋:由於用的是HashMap存儲數據,所以stuName惟一,因此經過姓名查找精確度高)
	 * 強調:要想獲取首先要先有數據才能夠,所以首先參考追加類而後再來看獲取
	 * @param name  學生姓名
	 * @return
	 */
	public Student getStudentByName(String name){
		if(students != null && students.size()>0){
			//.get(name)實際上就是獲取stuName.獲取的是students列表中的信息.
			Student student = (Student)this.students.get(name);
			return student;
		}
		return null;
	}

(2)經過班級編號來獲取學員信息

當咱們不記得學員姓名,只記住他屬於哪一個班級的時候,每每咱們就須要經過班級編號來進行查找。可是若是是用班級編號來查的話,那麼獲得的學員數量確定不僅一個。這種狀況咱們就要提早設定一個集合來提早存放咱們返回的多個學員的信息。下面的案例是經過ArrayList列表的方式來選擇存放數據的。

思路註釋:

<1> 建立getStudentByClassCord構造方法(傳參)。classNo爲按照班級編號參數

<2> 建立ArrayList集合,爲了存儲返回多個同窗的信息。

<3> for循環遍歷students字典中數據的key和value.最終取的是value中classCord的信息。先打印value信息。

<4> if(obj.getClassCord().contains(classNo)){ result.add(obj); }  // if語句判斷。先.getClassCord()找到全部班級編號再.contains(classNo).判斷是否包含要查找的classNo。

<5> 最終輸出

/**
	 * 根據班級編號分類查找學員信息
	 * (註釋:由於classCord是可能重複的,所以返回信息應該是經過一個列表進行接收,所以這裏定義ArrayList進行接收.)
	 * @param classNo  班級編號
	 * @return         集合
	 */
	public ArrayList getStudentByClassCord(String classNo){
		ArrayList result = new ArrayList();
		for(Object key:this.students.keySet()){
			Student obj =(Student)this.students.get(key);
			System.out.println(obj);
			if(obj.getClassCord().contains(classNo)){
				result.add(obj);
			}
		}
		return result;
	}

(3)經過學員編號來獲取學員信息

經過學員編號跟經過班級編號的獲取方式基本相同,所以在這裏不重複說明。

舒適提示:代碼中.contains()也能夠經過.indexof()的方式進行判斷。可是經過.indexof()的話必須加上!=-1,才表明找到了。

/**
	 * 根據學員編號來查找學員信息
	 * (註釋:同上.由於stuNo也是有可能重複的,所以返回信息應該也是經過一個列表進行接收,所以這裏定義ArrayList進行接收.)
	 * @param stuNo
	 * @return
	 */
	public ArrayList getStudentByStudentNo(String stuNo){
		ArrayList result1 = new ArrayList();
		for(Object key:this.students.keySet()){
			Student obj =(Student)this.students.get(key);
			System.out.println(obj);
			if(obj.getStuNumber().contains(stuNo)){
				result1.add(obj);
			}
		}
		return result1;
	}

(4)經過輸出的學員編號和教室編號查找學員信息

上述咱們已經逐一對學員編號進行查找以及依據教室編號進行查找列舉了方法。可是平常生活中還有一種狀況是須要從大量的學員中找出同屬於相同班級以及學員編號重複的信息。通常不建議學員編號重複,可是一旦出現重複的狀況咱們也能夠經過這種方法進行排查。就比如咱們的身份證是惟一的,可是有時候會聽新聞報出來講某某地區誰誰誰的身份證號跟誰誰誰的重複的case。因此這種狀況是存在的,爲了更好的排查信息的惟一性,所以在此寫了一下代碼。

思路註釋:

<1> 建立getStudentNoEqulesClassNo類,設定2個參數(stuNo學員編號,classNo教室編號)。

<2> 建立一個ArrayList存放返回值。(返回值可能爲多個,所以經過ArrayList方式存儲。也可HashMap)。

<3> 同上。先獲取key,value後再從value中指定要搜索的stuNo和classNo。這裏用到了&&,表明必須知足2個條件後,結果才成立。

<4> 最終輸出匹配到的學員信息。

/**
	 * 根據輸入的學員編號和教室編號,查找相同窗員編號和相同教室編號的學員信息
	 * @param stuNo
	 * @param classNo
	 * @return
	 */
	public ArrayList getStudentNoEqulesClassNo(String stuNo,String classNo){
		ArrayList result2 = new ArrayList();
		for(Object key:this.students.keySet()){
			Student obj =(Student)this.students.get(key);
			System.out.println(obj);
			if(obj.getStuNumber().contains(stuNo)&& obj.getClassCord().contains(classNo)){
				result2.add(obj);
			}
		}
		return result2;
	}

(5)獲取全部學員信息 

這種狀況也極爲廣泛,確切的應該說是必不可缺乏的存在。特別對於數據初始化而言。當咱們把全部數據都添加到字典中後,首先要先打印出來看一下是否這些數據都已經輸入進去了。因此下面的代碼無非是經過HashMap以及ArrayList存儲數據的不一樣版本而已。

/**
	 * 獲取全部學生信息
	 * (1)經過HashMap版本獲取
	 * (2)經過ArrayList版本獲取
	 * @return
	 */
	public HashMap getAllStudent_HashMap(){
		return this.students;
	}
	
	public ArrayList getAllStudent_ArrayList(){
		ArrayList result = new ArrayList();
		for(Object key:this.students.keySet()){
			Student obj =(Student)this.students.get(key);
			result.add(obj);
		}return result;
	}

 段落4:刪除學員信息 

上面已經說了除了追加之外任何對原數據的變動,都是基於先找到該數據。所以對於刪除而言也是同樣,先查找再刪除。

思路註釋:

首先同追加,查找同樣。對於刪除也一樣給了多個構造方法。下面方法1實際上是直接調用了方法2中的構造方法。所以主要仍是對方法2,經過stuName刪除進行具體分析。思路以下。

<1>  建立delStudent類,賦參數(參數爲stuName根據學生姓名查找)。注意的是這邊是定義一個boolean類型的構造方法,須要結果返回true或者false.

<2>  if(students != null && students.size()>0)同上首先判斷students字典中是否有值。

<3>  Student student = this.getStudentByName(stuName); if(student == null){ return false; }  //第一個分號前語句爲定義變量student,而後賦值。賦的是經過.getStudentByName(stuName)這個構造方法獲得stuName值。第二個分號前面的是if語句判斷剛剛定義的這個student變量中接收到的值是否爲空。若是爲空就返回flase.

<4> 對於下面的代碼一併解釋。當刪除一個數據時爲了不數據直接被刪除,首先先給一個提示是否肯定要刪除後,再刪除。起到一個二次確認的做用。

  定義變量isOK來接收Scanner鍵盤輸入傳進來的值,若是爲y就執行this.students.remove(stuName);並返回true。若是不相等返回false.

System.out.println("您肯定要刪除該學員信息嗎? [肯定]:y,[取消]:n");
			
			String isok = input.next();
			if(isok.equals("y")){
			this.students.remove(stuName);
			return true; //對於刪除的結果給一個返回值
			}
/**
	 * 刪除一個學生(面對對象版)
	 * @param student
	 */
	//直接調用下面的方法進行刪除
	public boolean delStudent(Student student){
		String stuName =student.getStuName();//也是經過StuName來進行刪除,先獲取到StuName
		return this.delStudent(stuName); //經過調用delStudent方法來執行刪除操做
	}
	/**
	 * 經過stuName刪除
	 * @param stuName
	 */
	public boolean delStudent(String stuName){
		//先判斷students列表中有沒有數據後再刪除
		Scanner input = new Scanner(System.in);
		if(students != null && students.size()>0){
			/**
			 * 判斷有沒有這個學生.找到後再刪除
			 */
			Student student = this.getStudentByName(stuName);
			if(student == null){
				return false;
				}
			System.out.println("您肯定要刪除該學員信息嗎? [肯定]:y,[取消]:n");
			
			String isok = input.next();
			if(isok.equals("y")){
			this.students.remove(stuName);
			return true; //對於刪除的結果給一個返回值
			}
		}
		return false;  //沒找到對象給返回值
	}

 段落5:更改學員信息

思路註釋:

方法1:

<1>  建立updateStudent構造方法(傳參)。參數爲student。

<2>  同上if語句判斷students字典是否爲空

<3>  Student studen = this.getStudentByName(student.getStuName());   //定義變量studen後賦值。獲取方式是調用.getStudentByName方法中student類中的get方法,最終獲取.getStuName()中的值。

<4>  this.students.put(student.getStuName(), student);  //put在這裏是追加更新的意思。key是student.getStuName()咱們獲取到的值,value爲修改後的結果。

方法2(重載):

<1> 重載,設定參數。 public boolean updateStudent(String stuName,String stuNumber,String classCord)。

<2> Student student = this.getStudentByName(stuName);  // 經過.getStudentByName(stuName)獲取學生姓名的方式進行查找。

<3> student.setStuNumber(stuNumber); student.setClassCord(classCord); return updateStudent(student); //第一個分號內容:經過stuName獲取到value信息後。經過student類中的set方法對stuNumber進行修改。第二個分號內容:同上也是經過student類中.setClassCord進行修改。第三個分號內容:return updateStudent(student)這裏的student實際上是stuName.再經過stuName獲取到已經被更改掉的value信息。

	/**
	 * 修改一個學生(面向對象版)
	 * @param student
	 */
	public boolean updateStudent(Student student){
		if(students != null && students.size()>0){
			/**
			 * 判斷有沒有這個學生.找到後再變動
			 */
			Student studen = this.getStudentByName(student.getStuName());
			if(studen == null){
				return false;
			}
			this.students.put(student.getStuName(), student);
			return true; //對於刪除的結果給一個返回值
		}
		return false;  //沒找到對象給返回值
	}
	/**
	 * 重載
	 * @param stuName
	 * @param stuNumber
	 * @param classCord
	 */
	public boolean updateStudent(String stuName,String stuNumber,String classCord){
		Student student = this.getStudentByName(stuName);
		student.setStuNumber(stuNumber);
		student.setClassCord(classCord);		
		return updateStudent(student);
	}
}

三,建立HashMapTest測試類

對於studentservices類的框架建立完畢後。接下來就是咱們在測試類中進行測試結果了。測試類結果代碼以下。

  1 package com.java.demo_9;
  2 
  3 import java.util.ArrayList;
  4 import java.util.HashMap;
  5 import java.util.Scanner;
  6 
  7 public class HashMapServicesTest {
  8 
  9     public static void main(String[] args) {
 10         /**
 11          * 系統初始化
 12          */
 13         System.out.println("系統初始化過程當中....");
 14         ;
 15         Student student = null;
 16         HashMapServices hashmapservices = new HashMapServices(); // 建立HashMapServices實例,爲了接下來調用其中的方法
 17         /*
 18          * for(int i=0;i<=10;i++){ if(i<=5){ student = new Student("student"+i,
 19          * "cn000"+i, "s100"+i);} else{ student = new Student("student"+i,
 20          * "cn000"+i, "s200"+i);} hashmapservices.addStudent(student); }
 21          */
 22 
 23         /**
 24          * 定義學生信息並添加
 25          */
 26 
 27         Student st1 = new Student("王小天", "cn0001", "class0001");
 28         Student st2 = new Student("張天愛", "cn0002", "class0002");
 29         Student st3 = new Student("武則天", "cn0003", "class0003");
 30         Student st4 = new Student("小鋼炮", "cn0004", "class0004");
 31         Student st5 = new Student("屠龍刀", "cn0005", "class0005");
 32         hashmapservices.addStudent(st1);
 33         hashmapservices.addStudent(st2);
 34         hashmapservices.addStudent(st3);
 35         hashmapservices.addStudent(st4);
 36         hashmapservices.addStudent(st5);
 37 
 38         System.out.println("系統初始化結束!");
 39 
 40         System.out.println("=================添加一個學生信息========================");
 41 
 42         Student stu = new Student(); // 建立Student實例,爲了接下來調用其中方法
 43         Scanner input = new Scanner(System.in);
 44         System.out.println("請輸入學員姓名:");
 45         stu.setStuName(input.next()); // 經過.setStuName的方式對鍵盤輸入值進行設定.這裏指設定添加學員姓名
 46         System.out.println("請輸入學員編號:");
 47         stu.setStuNumber(input.next()); // 經過.setStuName的方式對鍵盤輸入值進行設定.這裏指設定添加學員編號
 48         System.out.println("請輸入教室編號:");
 49         stu.setClassCord(input.next()); // 經過.setStuName的方式對鍵盤輸入值進行設定.這裏指設定添加教師編號
 50 
 51         hashmapservices.addStudent(stu); // 添加新加學員信息
 52 
 53         System.out.println("=================顯示學生信息========================");
 54         show(hashmapservices); // 作一個封裝.把顯示信息放到下面.
 55 
 56 /*        System.out.println("=================刪除一個學生信息========================");
 57         System.out.println("請輸入刪除學員的姓名:");
 58         String stuName = input.next();
 59 
 60         if (hashmapservices.delStudent(stuName)) {
 61             System.out.println("刪除成功!");
 62             System.out
 63                     .println("==============================================================");
 64             show(hashmapservices);
 65         } else {
 66             System.out.println("刪除失敗!");
 67         }*/
 68 /*        System.out.println("=================修改一個學生信息========================");
 69         System.out.println("請輸入修改學員姓名:");
 70         String stName = input.next(); // 儘可能定義新變量,可讀性高.若是引用上述其餘變量.我嘗試過,易出錯.排查花時間.
 71 
 72         student = hashmapservices.getStudentByName(stName);
 73         if (student != null) {
 74             System.out.println("請輸入修改學員的編號");
 75             student.setStuNumber(input.next());
 76             System.out.println("請輸入修改學員的班級編號");
 77             student.setClassCord(input.next());
 78 
 79             if (hashmapservices.updateStudent(student)) {
 80                 System.out.println("修改爲功!");
 81                 System.out
 82                         .println("=============================================================");
 83                 show(hashmapservices);
 84             }
 85         } else {
 86             System.out.println("查無此人!");
 87         }*/
 88 /*        System.out
 89                 .println("=================查找一個學生信息(經過年級編號查找)========================");
 90         System.out.println("請輸入查找學生的班級號:");
 91         String classNo = input.next();
 92 
 93         ArrayList result = hashmapservices.getStudentByClassCord(classNo);
 94         
 95         System.out.println();
 96         System.out.println("=================顯示學生信息========================");
 97         System.out.println();
 98         for (Object obj : result) {
 99             System.out.println(obj);
100         }*/
101         /*System.out.println();
102         System.out
103         .println("=================查找一個學生信息(經過學員編號查找)========================");
104         
105         System.out.println("請輸入查找學生的學員編號:");
106         String stuNo = input.next();
107         
108         ArrayList result1 = hashmapservices.getStudentByStudentNo(stuNo);
109         System.out.println();
110         System.out.println("=================顯示學生信息========================");
111         System.out.println();
112         for (Object obj : result1) {
113             System.out.println(obj);
114         }*/
115         System.out.println();
116         System.out
117         .println("=================查找學生信息(經過輸入的學員編號和教師編號查找相同窗員編號和相同教室編號的學員信息)========================");
118         
119         System.out.println("請輸入查找學生的學員編號:");
120         String stuNo = input.next();
121         System.out.println("請輸入查找學生的教師編號:");
122         String classNo = input.next();
123         ArrayList result2 = hashmapservices.getStudentNoEqulesClassNo(stuNo, classNo);
124         
125         System.out.println();
126         System.out.println("=================顯示學生信息========================");
127         System.out.println();
128         for (Object obj : result2) {
129             System.out.println(obj);
130         }
131 
132     }
133 
134     private static void show(HashMapServices hashmapservices) {
135         ArrayList result = hashmapservices.getAllStudent_ArrayList(); // 調用的是HashMapServices類中.getAllStudent_ArrayList()這個方法
136         // 編例輸出
137         for (Object obj : result) {
138             System.out.println(obj);
139         }
140     }
141 }
HashMapTest(測試類)

四,HashMapTest測試類代碼逐一分析

段落1:數據初始化

接下來的代碼由於較長的緣故,都選擇擴展打開方式。

思路註釋:

<1>   Student student = null;爲建立Student實例。初始化結果爲:Student st1 = new Student("王小天", "cn0001", "class0001");等等(追加條目)
<2>   調用HashMapServices hashmapservices = new HashMapServices();實例

<3>  hashmapservices.addStudent(st1);  //經過hashmapservices類中的addStudent方法追加學生信息。st1爲上述Student實例化後賦值的變量。

 1 package com.java.demo_9;
 2 
 3 import java.util.ArrayList;
 4 import java.util.HashMap;
 5 import java.util.Scanner;
 6 
 7 public class HashMapServicesTest {
 8 
 9     public static void main(String[] args) {
10         /**
11          * 系統初始化
12          */
13         System.out.println("系統初始化過程當中....");
14         ;
15         Student student = null;
16         HashMapServices hashmapservices = new HashMapServices(); // 建立HashMapServices實例,爲了接下來調用其中的方法
17         /*
18          * for(int i=0;i<=10;i++){ if(i<=5){ student = new Student("student"+i,
19          * "cn000"+i, "s100"+i);} else{ student = new Student("student"+i,
20          * "cn000"+i, "s200"+i);} hashmapservices.addStudent(student); }
21          */
22 
23         /**
24          * 定義學生信息並添加
25          */
26 
27         Student st1 = new Student("王小天", "cn0001", "class0001");
28         Student st2 = new Student("張天愛", "cn0002", "class0002");
29         Student st3 = new Student("武則天", "cn0003", "class0003");
30         Student st4 = new Student("小鋼炮", "cn0004", "class0004");
31         Student st5 = new Student("屠龍刀", "cn0005", "class0005");
32         hashmapservices.addStudent(st1);
33         hashmapservices.addStudent(st2);
34         hashmapservices.addStudent(st3);
35         hashmapservices.addStudent(st4);
36         hashmapservices.addStudent(st5);
37 
38         System.out.println("系統初始化結束!");
View Code

段落2:追加一個學員信息

思路註釋:

<1>  建立Student實例,經過Scanner鍵盤輸入的方式進行添加。

<2>  經過Student類中.set方法,去.set  StuName和.setStuNumber,.setClassCord的值。括號傳入的是input.next()鍵盤輸入進來的值。

<3>  經過hashmapservices.addStudent(變量)的方式把輸入的值add到hashmapservices字典中去。

<4>  經過Myeclipse8.5中的Extract Superclass..方法把輸出結果作一個 show(hashmapservices);方法。這樣作的好處是無論其餘方法再顯示信息時能夠直接調用這個方法。

<5>  對於遍歷結果的代碼中的ArrayList result = hashmapservices.getAllStudent_ArrayList();由於獲取的是全部學員的信息。因此這裏直接調用的是hashmapservices類中的.getAllStudent_ArrayList()這個方法。

package com.java.demo_9;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;

public class HashMapServicesTest {

    public static void main(String[] args) {
        /**
         * 系統初始化
         */
        System.out.println("系統初始化過程當中....");
        ;
        Student student = null;
        HashMapServices hashmapservices = new HashMapServices(); // 建立HashMapServices實例,爲了接下來調用其中的方法
        /*
         * for(int i=0;i<=10;i++){ if(i<=5){ student = new Student("student"+i,
         * "cn000"+i, "s100"+i);} else{ student = new Student("student"+i,
         * "cn000"+i, "s200"+i);} hashmapservices.addStudent(student); }
         */

        /**
         * 定義學生信息並添加
         */

        Student st1 = new Student("王小天", "cn0001", "class0001");
        Student st2 = new Student("張天愛", "cn0002", "class0002");
        Student st3 = new Student("武則天", "cn0003", "class0003");
        Student st4 = new Student("小鋼炮", "cn0004", "class0004");
        Student st5 = new Student("屠龍刀", "cn0005", "class0005");
        hashmapservices.addStudent(st1);
        hashmapservices.addStudent(st2);
        hashmapservices.addStudent(st3);
        hashmapservices.addStudent(st4);
        hashmapservices.addStudent(st5);

        System.out.println("系統初始化結束!");

        System.out.println("=================添加一個學生信息========================");

        Student stu = new Student(); // 建立Student實例,爲了接下來調用其中方法
        Scanner input = new Scanner(System.in);
        System.out.println("請輸入學員姓名:");
        stu.setStuName(input.next()); // 經過.setStuName的方式對鍵盤輸入值進行設定.這裏指設定添加學員姓名
        System.out.println("請輸入學員編號:");
        stu.setStuNumber(input.next()); // 經過.setStuName的方式對鍵盤輸入值進行設定.這裏指設定添加學員編號
        System.out.println("請輸入教室編號:");
        stu.setClassCord(input.next()); // 經過.setStuName的方式對鍵盤輸入值進行設定.這裏指設定添加教師編號

        hashmapservices.addStudent(stu); // 添加新加學員信息

        System.out.println("=================顯示學生信息========================");
        show(hashmapservices); // 作一個封裝.把顯示信息放到下面.

    }

    private static void show(HashMapServices hashmapservices) {
        ArrayList result = hashmapservices.getAllStudent_ArrayList(); // 調用的是HashMapServices類中.getAllStudent_ArrayList()這個方法
        // 編例輸出
        for (Object obj : result) {
            System.out.println(obj);
        }
    }
}
追加學員信息

 段落3:刪除一個學員信息

思路註釋:

<1>  建立Scanner輸入刪除學員提示,並設定變量接收鍵盤輸入值。

<2>  經過if,else語句判斷刪除學生的名字(stuName)。if語句中是經過hashmapservices類中.delStudent(stuName)方法進行刪除。

<3>  最終輸出結果。找到了該學員就刪除。沒有找到返回「刪除失敗!」。

package com.java.demo_9;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;

public class HashMapServicesTest {

    public static void main(String[] args) {
        /**
         * 系統初始化
         */
        System.out.println("系統初始化過程當中....");
        ;
        Student student = null;
        HashMapServices hashmapservices = new HashMapServices(); // 建立HashMapServices實例,爲了接下來調用其中的方法
        /*
         * for(int i=0;i<=10;i++){ if(i<=5){ student = new Student("student"+i,
         * "cn000"+i, "s100"+i);} else{ student = new Student("student"+i,
         * "cn000"+i, "s200"+i);} hashmapservices.addStudent(student); }
         */

        /**
         * 定義學生信息並添加
         */

        Student st1 = new Student("王小天", "cn0001", "class0001");
        Student st2 = new Student("張天愛", "cn0002", "class0002");
        Student st3 = new Student("武則天", "cn0003", "class0003");
        Student st4 = new Student("小鋼炮", "cn0004", "class0004");
        Student st5 = new Student("屠龍刀", "cn0005", "class0005");
        hashmapservices.addStudent(st1);
        hashmapservices.addStudent(st2);
        hashmapservices.addStudent(st3);
        hashmapservices.addStudent(st4);
        hashmapservices.addStudent(st5);

        System.out.println("系統初始化結束!");

        System.out.println("=================添加一個學生信息========================");

        Student stu = new Student(); // 建立Student實例,爲了接下來調用其中方法
        Scanner input = new Scanner(System.in);
        System.out.println("請輸入學員姓名:");
        stu.setStuName(input.next()); // 經過.setStuName的方式對鍵盤輸入值進行設定.這裏指設定添加學員姓名
        System.out.println("請輸入學員編號:");
        stu.setStuNumber(input.next()); // 經過.setStuName的方式對鍵盤輸入值進行設定.這裏指設定添加學員編號
        System.out.println("請輸入教室編號:");
        stu.setClassCord(input.next()); // 經過.setStuName的方式對鍵盤輸入值進行設定.這裏指設定添加教師編號

        hashmapservices.addStudent(stu); // 添加新加學員信息

        System.out.println("=================顯示學生信息========================");
        show(hashmapservices); // 作一個封裝.把顯示信息放到下面.
        

        System.out.println("=================刪除一個學生信息========================");
        System.out.println("請輸入刪除學員的姓名:");
        String stuName = input.next();

        if (hashmapservices.delStudent(stuName)) {
            System.out.println("刪除成功!");
            System.out
                    .println("==============================================================");
            show(hashmapservices);
        } else {
            System.out.println("刪除失敗!");
        }

    }

    private static void show(HashMapServices hashmapservices) {
        ArrayList result = hashmapservices.getAllStudent_ArrayList(); // 調用的是HashMapServices類中.getAllStudent_ArrayList()這個方法
        // 編例輸出
        for (Object obj : result) {
            System.out.println(obj);
        }
    }
}
刪除學員信息

結果:(這裏連同追加學員信息一併顯示結果)

系統初始化過程當中....
系統初始化結束!
=================添加一個學生信息========================
請輸入學員姓名:
鬼腳七
請輸入學員編號:
cn0003
請輸入教室編號:
class0003
=================顯示學生信息========================
學員名稱:屠龍刀, 學員編號:cn0005, 班級番號:class0005
學員名稱:鬼腳七, 學員編號:cn0003, 班級番號:class0003
學員名稱:張天愛, 學員編號:cn0002, 班級番號:class0002
學員名稱:小鋼炮, 學員編號:cn0004, 班級番號:class0004
學員名稱:王小天, 學員編號:cn0001, 班級番號:class0001
學員名稱:武則天, 學員編號:cn0003, 班級番號:class0003
=================刪除一個學生信息========================
請輸入刪除學員的姓名:
王小天
您肯定要刪除該學員信息嗎? [肯定]:y,[取消]:n
y
刪除成功!
==============================================================
學員名稱:屠龍刀, 學員編號:cn0005, 班級番號:class0005
學員名稱:鬼腳七, 學員編號:cn0003, 班級番號:class0003
學員名稱:張天愛, 學員編號:cn0002, 班級番號:class0002
學員名稱:小鋼炮, 學員編號:cn0004, 班級番號:class0004
學員名稱:武則天, 學員編號:cn0003, 班級番號:class0003

 段落4:修改一個學員信息

思路註釋:

<1>  一樣經過.getStudentByName方法經過查詢stuName先事先找到該學員

<2>  設置變量接收鍵盤輸入的值(輸入爲修改學員姓名,編號及班級編號)

<3>  if,else循環語句,調用hashmapservices.updateStudent方法更新。student參數爲stuName。

<4> 最終輸出信息。

 1 package com.java.demo_9;
 2 
 3 import java.util.ArrayList;
 4 import java.util.HashMap;
 5 import java.util.Scanner;
 6 
 7 public class HashMapServicesTest {
 8 
 9     public static void main(String[] args) {
10         /**
11          * 系統初始化
12          */
13         System.out.println("系統初始化過程當中....");
14         ;
15         Student student = null;
16         HashMapServices hashmapservices = new HashMapServices(); // 建立HashMapServices實例,爲了接下來調用其中的方法
17         /*
18          * for(int i=0;i<=10;i++){ if(i<=5){ student = new Student("student"+i,
19          * "cn000"+i, "s100"+i);} else{ student = new Student("student"+i,
20          * "cn000"+i, "s200"+i);} hashmapservices.addStudent(student); }
21          */
22 
23         /**
24          * 定義學生信息並添加
25          */
26 
27         Student st1 = new Student("王小天", "cn0001", "class0001");
28         Student st2 = new Student("張天愛", "cn0002", "class0002");
29         Student st3 = new Student("武則天", "cn0003", "class0003");
30         Student st4 = new Student("小鋼炮", "cn0004", "class0004");
31         Student st5 = new Student("屠龍刀", "cn0005", "class0005");
32         hashmapservices.addStudent(st1);
33         hashmapservices.addStudent(st2);
34         hashmapservices.addStudent(st3);
35         hashmapservices.addStudent(st4);
36         hashmapservices.addStudent(st5);
37 
38         System.out.println("系統初始化結束!");
39 
40         System.out.println("=================添加一個學生信息========================");
41 
42         Student stu = new Student(); // 建立Student實例,爲了接下來調用其中方法
43         Scanner input = new Scanner(System.in);
44         System.out.println("請輸入學員姓名:");
45         stu.setStuName(input.next()); // 經過.setStuName的方式對鍵盤輸入值進行設定.這裏指設定添加學員姓名
46         System.out.println("請輸入學員編號:");
47         stu.setStuNumber(input.next()); // 經過.setStuName的方式對鍵盤輸入值進行設定.這裏指設定添加學員編號
48         System.out.println("請輸入教室編號:");
49         stu.setClassCord(input.next()); // 經過.setStuName的方式對鍵盤輸入值進行設定.這裏指設定添加教師編號
50 
51         hashmapservices.addStudent(stu); // 添加新加學員信息
52 
53         System.out.println("=================顯示學生信息========================");
54         show(hashmapservices); // 作一個封裝.把顯示信息放到下面.
55         
56         System.out.println("=================修改一個學生信息========================");
57         System.out.println("請輸入修改學員姓名:");
58         String stName = input.next(); // 儘可能定義新變量,可讀性高.若是引用上述其餘變量.我嘗試過,易出錯.排查花時間.
59 
60         student = hashmapservices.getStudentByName(stName);
61         if (student != null) {
62             System.out.println("請輸入修改學員的編號");
63             student.setStuNumber(input.next());
64             System.out.println("請輸入修改學員的班級編號");
65             student.setClassCord(input.next());
66 
67             if (hashmapservices.updateStudent(student)) {
68                 System.out.println("修改爲功!");
69                 System.out
70                         .println("=============================================================");
71                 show(hashmapservices);
72             }
73         } else {
74             System.out.println("查無此人!");
75         }
76 
77     }
78 
79     private static void show(HashMapServices hashmapservices) {
80         ArrayList result = hashmapservices.getAllStudent_ArrayList(); // 調用的是HashMapServices類中.getAllStudent_ArrayList()這個方法
81         // 編例輸出
82         for (Object obj : result) {
83             System.out.println(obj);
84         }
85     }
86 }
修改一個學員信息(根據stuName查詢)

結果:

輸出結果大於1.(輸出來的結果至少不會小於1個)

系統初始化過程當中....
系統初始化結束!
=================添加一個學生信息========================
請輸入學員姓名:
金三胖
請輸入學員編號:
cn0003
請輸入教室編號:
class0003
=================顯示學生信息========================
學員名稱:屠龍刀, 學員編號:cn0005, 班級番號:class0005
學員名稱:張天愛, 學員編號:cn0002, 班級番號:class0002
學員名稱:小鋼炮, 學員編號:cn0004, 班級番號:class0004
學員名稱:王小天, 學員編號:cn0001, 班級番號:class0001
學員名稱:金三胖, 學員編號:cn0003, 班級番號:class0003
學員名稱:武則天, 學員編號:cn0003, 班級番號:class0003
=================修改一個學生信息========================
請輸入修改學員姓名:
王小天
請輸入修改學員的編號
cn0003
請輸入修改學員的班級編號
class0003
修改爲功!
=============================================================
學員名稱:屠龍刀, 學員編號:cn0005, 班級番號:class0005
學員名稱:張天愛, 學員編號:cn0002, 班級番號:class0002
學員名稱:小鋼炮, 學員編號:cn0004, 班級番號:class0004
學員名稱:王小天, 學員編號:cn0003, 班級番號:class0003
學員名稱:金三胖, 學員編號:cn0003, 班級番號:class0003
學員名稱:武則天, 學員編號:cn0003, 班級番號:class0003

 段落5:查找一個學員信息(經過學員班級編號查找學員信息)

註釋:對於查找學員的方法不少,能夠經過stuName(學員姓名),stuNumber(學員編號)也能夠經過classCord(班級編號)等方式進行查找。固然若是student類在定義的時候不止這3個參數還能夠經過其餘的方式對學員進行查找。下面的代碼中咱們選中幾種平時會常常遇到的場景進行分析。

【classCord進行查找】

 思路註釋:

<1>  Scanner鍵盤輸入,設定變量接收結果

<2>  由於classCord查詢結果會有重複性,所以設定一個集合進行值的接收

<3>  集合接收的對象爲classNo。所以仍是經過hashmapservices類方法中的.getStudentByClassCord方法查詢。

<4> 最終遍歷結果顯示。 這裏不能繼續使用show方法。由於show方法中也同時存在一個ArrayList集合。所以須要手動遍歷結果。

package com.java.demo_9;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;

public class HashMapServicesTest {

    public static void main(String[] args) {
        /**
         * 系統初始化
         */
        System.out.println("系統初始化過程當中....");
        ;
        Student student = null;
        HashMapServices hashmapservices = new HashMapServices(); // 建立HashMapServices實例,爲了接下來調用其中的方法
        /*
         * for(int i=0;i<=10;i++){ if(i<=5){ student = new Student("student"+i,
         * "cn000"+i, "s100"+i);} else{ student = new Student("student"+i,
         * "cn000"+i, "s200"+i);} hashmapservices.addStudent(student); }
         */

        /**
         * 定義學生信息並添加
         */

        Student st1 = new Student("王小天", "cn0001", "class0001");
        Student st2 = new Student("張天愛", "cn0002", "class0002");
        Student st3 = new Student("武則天", "cn0003", "class0003");
        Student st4 = new Student("小鋼炮", "cn0004", "class0004");
        Student st5 = new Student("屠龍刀", "cn0005", "class0005");
        hashmapservices.addStudent(st1);
        hashmapservices.addStudent(st2);
        hashmapservices.addStudent(st3);
        hashmapservices.addStudent(st4);
        hashmapservices.addStudent(st5);

        System.out.println("系統初始化結束!");

        System.out.println("=================添加一個學生信息========================");

        Student stu = new Student(); // 建立Student實例,爲了接下來調用其中方法
        Scanner input = new Scanner(System.in);
        System.out.println("請輸入學員姓名:");
        stu.setStuName(input.next()); // 經過.setStuName的方式對鍵盤輸入值進行設定.這裏指設定添加學員姓名
        System.out.println("請輸入學員編號:");
        stu.setStuNumber(input.next()); // 經過.setStuName的方式對鍵盤輸入值進行設定.這裏指設定添加學員編號
        System.out.println("請輸入教室編號:");
        stu.setClassCord(input.next()); // 經過.setStuName的方式對鍵盤輸入值進行設定.這裏指設定添加教師編號

        hashmapservices.addStudent(stu); // 添加新加學員信息

        System.out.println("=================顯示學生信息========================");
        show(hashmapservices); // 作一個封裝.把顯示信息放到下面.
        
        System.out
                .println("=================查找一個學生信息(經過年級編號查找)========================");
        System.out.println("請輸入查找學生的班級號:");
        String classNo = input.next();

        ArrayList result = hashmapservices.getStudentByClassCord(classNo);
        
        System.out.println();
        System.out.println("=================顯示學生信息========================");
        System.out.println();
        for (Object obj : result) {
            System.out.println(obj);
        }
    }

    private static void show(HashMapServices hashmapservices) {
        ArrayList result = hashmapservices.getAllStudent_ArrayList(); // 調用的是HashMapServices類中.getAllStudent_ArrayList()這個方法
        // 編例輸出
        for (Object obj : result) {
            System.out.println(obj);
        }
    }
}
查找學員信息(經過classCord進行查找)

結果:

系統初始化過程當中....
系統初始化結束!
=================添加一個學生信息========================
請輸入學員姓名:
大力水手
請輸入學員編號:
cn0001
請輸入教室編號:
class0001
=================顯示學生信息========================
學員名稱:大力水手, 學員編號:cn0001, 班級番號:class0001
學員名稱:屠龍刀, 學員編號:cn0005, 班級番號:class0005
學員名稱:張天愛, 學員編號:cn0002, 班級番號:class0002
學員名稱:小鋼炮, 學員編號:cn0004, 班級番號:class0004
學員名稱:王小天, 學員編號:cn0001, 班級番號:class0001
學員名稱:武則天, 學員編號:cn0003, 班級番號:class0003
=================查找一個學生信息(經過年級編號查找)========================
請輸入查找學生的班級號:
class0001
學員名稱:大力水手, 學員編號:cn0001, 班級番號:class0001
學員名稱:屠龍刀, 學員編號:cn0005, 班級番號:class0005
學員名稱:張天愛, 學員編號:cn0002, 班級番號:class0002
學員名稱:小鋼炮, 學員編號:cn0004, 班級番號:class0004
學員名稱:王小天, 學員編號:cn0001, 班級番號:class0001
學員名稱:武則天, 學員編號:cn0003, 班級番號:class0003

=================顯示學生信息========================

學員名稱:大力水手, 學員編號:cn0001, 班級番號:class0001
學員名稱:王小天, 學員編號:cn0001, 班級番號:class0001

 段落5:查找一個學員信息(經過學員編號查找學員信息)

註釋:對於查找學員的方法不少,能夠經過stuName(學員姓名),stuNumber(學員編號)也能夠經過classCord(班級編號)等方式進行查找。固然若是student類在定義的時候不止這3個參數還能夠經過其餘的方式對學員進行查找。下面的代碼中咱們選中幾種平時會常常遇到的場景進行分析。

【stundentNo進行查找】

 思路註釋:(同classCord方法無差異)

<1>  Scanner鍵盤輸入,設定變量接收結果

<2>  由於stuNo查詢結果會有重複性,所以設定一個集合進行值的接收

<3>  集合接收的對象爲classNo。所以仍是經過hashmapservices類方法中的.getStudentByStudentNo方法查詢。

<4> 最終遍歷結果顯示。 這裏不能繼續使用show方法。由於show方法中也同時存在一個ArrayList集合。所以須要手動遍歷結果。

package com.java.demo_9;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;

public class HashMapServicesTest {

    public static void main(String[] args) {
        /**
         * 系統初始化
         */
        System.out.println("系統初始化過程當中....");
        ;
        Student student = null;
        HashMapServices hashmapservices = new HashMapServices(); // 建立HashMapServices實例,爲了接下來調用其中的方法
        /*
         * for(int i=0;i<=10;i++){ if(i<=5){ student = new Student("student"+i,
         * "cn000"+i, "s100"+i);} else{ student = new Student("student"+i,
         * "cn000"+i, "s200"+i);} hashmapservices.addStudent(student); }
         */

        /**
         * 定義學生信息並添加
         */

        Student st1 = new Student("王小天", "cn0001", "class0001");
        Student st2 = new Student("張天愛", "cn0002", "class0002");
        Student st3 = new Student("武則天", "cn0003", "class0003");
        Student st4 = new Student("小鋼炮", "cn0004", "class0004");
        Student st5 = new Student("屠龍刀", "cn0005", "class0005");
        hashmapservices.addStudent(st1);
        hashmapservices.addStudent(st2);
        hashmapservices.addStudent(st3);
        hashmapservices.addStudent(st4);
        hashmapservices.addStudent(st5);

        System.out.println("系統初始化結束!");

        System.out.println("=================添加一個學生信息========================");

        Student stu = new Student(); // 建立Student實例,爲了接下來調用其中方法
        Scanner input = new Scanner(System.in);
        System.out.println("請輸入學員姓名:");
        stu.setStuName(input.next()); // 經過.setStuName的方式對鍵盤輸入值進行設定.這裏指設定添加學員姓名
        System.out.println("請輸入學員編號:");
        stu.setStuNumber(input.next()); // 經過.setStuName的方式對鍵盤輸入值進行設定.這裏指設定添加學員編號
        System.out.println("請輸入教室編號:");
        stu.setClassCord(input.next()); // 經過.setStuName的方式對鍵盤輸入值進行設定.這裏指設定添加教師編號

        hashmapservices.addStudent(stu); // 添加新加學員信息

        System.out.println("=================顯示學生信息========================");
        show(hashmapservices); // 作一個封裝.把顯示信息放到下面.
        
        System.out
                .println("=================查找一個學生信息(經過年級編號查找)========================");
        System.out.println("請輸入查找學生的班級號:");
        String classNo = input.next();

        ArrayList result = hashmapservices.getStudentByClassCord(classNo);
        
        System.out.println();
        System.out.println("=================顯示學生信息========================");
        System.out.println();
        for (Object obj : result) {
            System.out.println(obj);
        }*/
        System.out.println();
        System.out
        .println("=================查找一個學生信息(經過學員編號查找)========================");
        
        System.out.println("請輸入查找學生的學員編號:");
        String stuNo = input.next();
        
        ArrayList result1 = hashmapservices.getStudentByStudentNo(stuNo);
        System.out.println();
        System.out.println("=================顯示學生信息========================");
        System.out.println();
        for (Object obj : result1) {
            System.out.println(obj);
        }

    }

    private static void show(HashMapServices hashmapservices) {
        ArrayList result = hashmapservices.getAllStudent_ArrayList(); // 調用的是HashMapServices類中.getAllStudent_ArrayList()這個方法
        // 編例輸出
        for (Object obj : result) {
            System.out.println(obj);
        }
    }
}
查詢學員信息(經過stuNumber查詢)

結果:(一樣輸出結果大於等於1個)

系統初始化過程當中....
系統初始化結束!
=================添加一個學生信息========================
請輸入學員姓名:
tonyliu
請輸入學員編號:
cn0002
請輸入教室編號:
class0002
=================顯示學生信息========================
學員名稱:tonyliu, 學員編號:cn0002, 班級番號:class0002
學員名稱:屠龍刀, 學員編號:cn0005, 班級番號:class0005
學員名稱:張天愛, 學員編號:cn0002, 班級番號:class0002
學員名稱:小鋼炮, 學員編號:cn0004, 班級番號:class0004
學員名稱:王小天, 學員編號:cn0001, 班級番號:class0001
學員名稱:武則天, 學員編號:cn0003, 班級番號:class0003

=================查找一個學生信息(經過學員編號查找)========================
請輸入查找學生的學員編號:
cn0002
學員名稱:tonyliu, 學員編號:cn0002, 班級番號:class0002
學員名稱:屠龍刀, 學員編號:cn0005, 班級番號:class0005
學員名稱:張天愛, 學員編號:cn0002, 班級番號:class0002
學員名稱:小鋼炮, 學員編號:cn0004, 班級番號:class0004
學員名稱:王小天, 學員編號:cn0001, 班級番號:class0001
學員名稱:武則天, 學員編號:cn0003, 班級番號:class0003

=================顯示學生信息========================

學員名稱:tonyliu, 學員編號:cn0002, 班級番號:class0002
學員名稱:張天愛, 學員編號:cn0002, 班級番號:class0002

  段落6:查找一個學員信息(經過輸入的學員編號和教師編號查找相同窗員編號和相同教室編號的學員信息)

註釋:若是想要篩選學員編號跟教室編號相同的方法請參考下列代碼

【stundentNo和classCord進行查找】

 思路註釋:

<1>  Scanner鍵盤輸入,設定變量接收結果。(2個變量 1個是接收studentNo的1個是接收classNo的)

<2>  一樣studentNo跟classCord查詢結果會有重複性,所以設定2個集合分別進行值的接收

<3>  經過hashmapservices.getStudentNoEqulesClassNo類中的方法分別傳參。(傳入的是鍵盤輸入的stuNo和calssNo)

<4> 最終遍歷結果顯示。

package com.java.demo_9;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;

public class HashMapServicesTest {

    public static void main(String[] args) {
        /**
         * 系統初始化
         */
        System.out.println("系統初始化過程當中....");
        ;
        Student student = null;
        HashMapServices hashmapservices = new HashMapServices(); // 建立HashMapServices實例,爲了接下來調用其中的方法
        /*
         * for(int i=0;i<=10;i++){ if(i<=5){ student = new Student("student"+i,
         * "cn000"+i, "s100"+i);} else{ student = new Student("student"+i,
         * "cn000"+i, "s200"+i);} hashmapservices.addStudent(student); }
         */

        /**
         * 定義學生信息並添加
         */

        Student st1 = new Student("王小天", "cn0001", "class0001");
        Student st2 = new Student("張天愛", "cn0002", "class0002");
        Student st3 = new Student("武則天", "cn0003", "class0003");
        Student st4 = new Student("小鋼炮", "cn0004", "class0004");
        Student st5 = new Student("屠龍刀", "cn0005", "class0005");
        hashmapservices.addStudent(st1);
        hashmapservices.addStudent(st2);
        hashmapservices.addStudent(st3);
        hashmapservices.addStudent(st4);
        hashmapservices.addStudent(st5);

        System.out.println("系統初始化結束!");

        System.out.println("=================添加一個學生信息========================");

        Student stu = new Student(); // 建立Student實例,爲了接下來調用其中方法
        Scanner input = new Scanner(System.in);
        System.out.println("請輸入學員姓名:");
        stu.setStuName(input.next()); // 經過.setStuName的方式對鍵盤輸入值進行設定.這裏指設定添加學員姓名
        System.out.println("請輸入學員編號:");
        stu.setStuNumber(input.next()); // 經過.setStuName的方式對鍵盤輸入值進行設定.這裏指設定添加學員編號
        System.out.println("請輸入教室編號:");
        stu.setClassCord(input.next()); // 經過.setStuName的方式對鍵盤輸入值進行設定.這裏指設定添加教師編號

        hashmapservices.addStudent(stu); // 添加新加學員信息

        System.out.println("=================顯示學生信息========================");
        show(hashmapservices); // 作一個封裝.把顯示信息放到下面.

        System.out.println();
        System.out
        .println("=================查找學生信息(經過輸入的學員編號和教師編號查找相同窗員編號和相同教室編號的學員信息)========================");
        
        System.out.println("請輸入查找學生的學員編號:");
        String stuNo = input.next();
        System.out.println("請輸入查找學生的教師編號:");
        String classNo = input.next();
        ArrayList result2 = hashmapservices.getStudentNoEqulesClassNo(stuNo, classNo);
        
        System.out.println();
        System.out.println("=================顯示學生信息========================");
        System.out.println();
        for (Object obj : result2) {
            System.out.println(obj);
        }
    }

    private static void show(HashMapServices hashmapservices) {
        ArrayList result = hashmapservices.getAllStudent_ArrayList(); // 調用的是HashMapServices類中.getAllStudent_ArrayList()這個方法
        // 編例輸出
        for (Object obj : result) {
            System.out.println(obj);
        }
    }
}
查詢一個學員信息(學員編號跟教室編號相同的狀況)

 結果:

系統初始化過程當中....
系統初始化結束!
=================添加一個學生信息========================
請輸入學員姓名:
xiaoyueyue
請輸入學員編號:
cn0003
請輸入教室編號:
class0003
=================顯示學生信息========================
學員名稱:xiaoyueyue, 學員編號:cn0003, 班級番號:class0003
學員名稱:屠龍刀, 學員編號:cn0005, 班級番號:class0005
學員名稱:張天愛, 學員編號:cn0002, 班級番號:class0002
學員名稱:小鋼炮, 學員編號:cn0004, 班級番號:class0004
學員名稱:王小天, 學員編號:cn0001, 班級番號:class0001
學員名稱:武則天, 學員編號:cn0003, 班級番號:class0003

=================查找學生信息(經過輸入的學員編號和教師編號查找相同窗員編號和相同教室編號的學員信息)========================
請輸入查找學生的學員編號:
cn0003
請輸入查找學生的教師編號:
class0003
學員名稱:xiaoyueyue, 學員編號:cn0003, 班級番號:class0003
學員名稱:屠龍刀, 學員編號:cn0005, 班級番號:class0005
學員名稱:張天愛, 學員編號:cn0002, 班級番號:class0002
學員名稱:小鋼炮, 學員編號:cn0004, 班級番號:class0004
學員名稱:王小天, 學員編號:cn0001, 班級番號:class0001
學員名稱:武則天, 學員編號:cn0003, 班級番號:class0003

=================顯示學生信息========================

學員名稱:xiaoyueyue, 學員編號:cn0003, 班級番號:class0003
學員名稱:武則天, 學員編號:cn0003, 班級番號:class0003
相關文章
相關標籤/搜索