課程
/后端開發
/Java
/Java入門第三季
為什么我添加的學生是按照添加順序打印輸出的,各位大神誰指導一下?謝謝啦
2015-09-09
源自:Java入門第三季 5-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進行初始化
public MapTest(){
this.students=new HashMap<String,Student>();
}
* 測試添加:輸入學生ID,判斷是否被占用
* 若未被占用,則輸入姓名,創建學生對象,并且添加到students中;
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方法
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中已有的映射
public void testRemove(){
// 提示將要刪除的學生的ID
System.out.println("請輸入要刪除的學生的ID:");
// 獲取從鍵盤上輸入的學生的ID
Scanner scan =new Scanner(System.in);
// 判斷該ID是否對應一個學生(即value值)
while(true){
// 提示輸入的學生ID不存在
System.out.println("輸入的學生ID不存在");
students.remove(ID);
System.out.println("成功刪除學生:"+st.getName());
break;
* 通過entrySet方法遍歷Map
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中已有映射
public void testModify(){
// 提示要修改的學生的ID
System.out.println("請輸入要修改的學生ID");
// 創建一個Scanner對象,用來接收從鍵盤上輸入的學生的ID
Scanner scan = new Scanner(System.in);
// 判斷stuID對應的學生對象是否存在
String stuID = scan.next();
Student stu=students.get(stuID);
if(stu==null){
System.out.println("該學生ID不存在,請重新輸入:");
// 提示當前要修改的學生對象的姓名
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("修改成功!");
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();
這是源代碼,會不會太多了?謝謝啦
代碼截圖?
舉報
Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧
2 回答為什么我的打印成功添加學生為null,沒有報錯
4 回答Set中的元素是無序的 為什么打印輸出的是有順序的 求幫助謝謝
4 回答Map中元素不是無序的嗎?為什么我輸出是添加的順序是一樣的?
2 回答運行程序添加學生后,為什么顯示已添加的學生顯示的是ID而不是姓名
3 回答? 為什么我打印出來的順序是一樣的????
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-09-10
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();
}
}
這是源代碼,會不會太多了?謝謝啦
2015-09-10
代碼截圖?