亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么我添加的學生是按照添加順序打印輸出的,各位大神誰指導一下?謝謝啦

為什么我添加的學生是按照添加順序打印輸出的,各位大神誰指導一下?謝謝啦

正在回答

2 回答

package com.imooc.collection;


import java.util.HashMap;

import java.util.Map;

import java.util.Map.Entry;

import java.util.Scanner;

import java.util.Set;


public class MapTest {


/**

* 用來承裝學生類型的對象

* @param args

*/

public Map<String,Student> students;

/**

* 定義構造方法,并在構造方法中對studens進行初始化

* @param args

*/

public MapTest(){

this.students=new HashMap<String,Student>();

}

/**

* 測試添加:輸入學生ID,判斷是否被占用

* 若未被占用,則輸入姓名,創建學生對象,并且添加到students中;

* @param args

*/

public void testPut(){

Scanner scan=new Scanner(System.in);

int i=0;

while(i<3){

// 從鍵盤上輸入ID

System.out.println("請輸入學生ID:");

String ID=scan.next();

// 判斷輸入的ID是否已被占用

Student st=students.get(ID);

if(st==null){

System.out.println("請輸入學生姓名:");

String name=scan.next();

// 創建新的學生對象

Student newStu=new Student(ID,name);

// ID-學生映射(調用Map(students)的put方法)

students.put(ID, newStu);

System.out.println("成功添加學生"+students.get(ID).getName());

// System.out.println("成功添加學生"+newStu.getId()+" "+newStu.getName());

i++;

}else{

System.out.println("該學生ID已被占用");

continue;

}

}

}

/**

* 測試Map的keySet方法

* @param args

*/

public void testKeySet(){

// 通過KeySet方法,返回Map(students)的所有鍵(Key)的Set集合

Set<String> KeySet=students.keySet();

// 取得KeySet的長度?

System.out.println("總共有"+students.size()+"個學生");

// 循環遍歷KeySet中的Key值,得到每一個Key值對應的value

for(String stuId:KeySet){

if(stuId!=null){

// 需定義一個Student類型的對象接收stuId對應的value值

Student st=students.get(stuId);

System.out.println("學生:"+stuId+" "+st.getName());

}

}

}

/**

* 測試刪除Map中已有的映射

* @param args

*/

public void testRemove(){

// 提示將要刪除的學生的ID

System.out.println("請輸入要刪除的學生的ID:");

// 獲取從鍵盤上輸入的學生的ID

Scanner scan =new Scanner(System.in);

String ID=scan.next();

// 判斷該ID是否對應一個學生(即value值)

Student st=students.get(ID);

while(true){

if(st==null){

// 提示輸入的學生ID不存在

System.out.println("輸入的學生ID不存在");

continue;

}

students.remove(ID);

System.out.println("成功刪除學生:"+st.getName());

break;

}

}

/**

* 通過entrySet方法遍歷Map

* @param args

*/

public void testEntrySet(){

// 通過entrySet方法,返回Map中的所有鍵值對

Set<Entry<String,Student>> entrySet=students.entrySet();

for(Entry<String,Student> entry:entrySet){

System.out.println("取得鍵為:"+entry.getKey());

// 得到的值的類型和Entery中value(Student)的類型一樣,可用getName()方法獲得姓名

System.out.println("對應的值為:"+entry.getValue().getName());

}

}

/**

* 利用put方法修改Map中已有映射

* @param args

*/

public void testModify(){

// 提示要修改的學生的ID

System.out.println("請輸入要修改的學生ID");

// 創建一個Scanner對象,用來接收從鍵盤上輸入的學生的ID

Scanner scan = new Scanner(System.in);

// 判斷stuID對應的學生對象是否存在

while(true){

String stuID = scan.next();

Student stu=students.get(stuID);

if(stu==null){

System.out.println("該學生ID不存在,請重新輸入:");

continue;

}

// 提示當前要修改的學生對象的姓名

System.out.println("學生ID為"+stuID+"對應的學生姓名為:"+students.get(stuID).getName()+",該學生信息即將被修改");

// 提示輸入新的學生姓名

System.out.println("請輸入新的學生姓名:");

String newName = scan.next();

Student newStudent = new Student(stuID,newName);

students.put(stuID, newStudent);

System.out.println("修改成功!");

break;

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub


MapTest mp=new MapTest();

mp.testPut();

mp.testKeySet();

// mp.testRemove();

// mp.testEntrySet();

mp.testModify();

mp.testEntrySet();

}


}

這是源代碼,會不會太多了?謝謝啦

0 回復 有任何疑惑可以回復我~

代碼截圖?

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么我添加的學生是按照添加順序打印輸出的,各位大神誰指導一下?謝謝啦

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號