輸出順序始終是根據id大小來排序的
package?com.demo.zhq;
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;
private?Scanner?console;
private?Scanner?b;
private?Scanner?a;
/**
?*?構造器中初始化students屬性
?*/
public?MapTest(){
this.students?=?new?HashMap<String,Student>();
}
/**
?*?測試添加:輸入學生ID,判斷是否被占用
?*?若未被占用,則輸入姓名,創建學生對象,并且添加到students中
?*?
?*?@param?args
?*/
public?void?testPut(){
console?=?new?Scanner(System.in);
int?i?=?0;
while(i?<?3){
System.out.println("請輸入學生ID:");
String?ID?=?console.next();
//判斷該ID是否被占用
Student?st?=?students.get(ID);
if?(st?==?null)?{
//提示輸入學生姓名
System.out.println("請輸入學生姓名:");
String?name?=?console.next();
//創建一個新的對象
Student?newStudent?=?new?Student(ID,?name);
//通過調用stdents的put方法,添加?ID-學生映射
students.put(ID,?newStudent);
System.out.println("成功添加學生:"+students.get(ID).name);
i++;
}else?{
System.out.println("該學生ID已被占用!");
continue;?
}
}
}
/**
?*?測試Map的keySet方法
?*?@param?args
?*/
public?void?testKeySet(){
//通過keySet的方法,返回Map中的所有"鍵"的Set集合
Set<String>?keySet?=?students.keySet();
// //取得students的容量
// System.out.println("總共有:"+students.size()+"個學生!");
//遍歷keySet,取得每一個鍵,在調用get方法取得每個鍵對應的value
for(String?stuId?:?keySet){
Student?st?=?students.get(stuId);
if?(st?!=?null)?{
System.out.println("學生:"+st.name);
}
}
}
/**
?*?測試Map的刪除映射
?*?@param?args
?*/
public?void?testRemove()?{
b?=?new?Scanner(System.in);
?while?(true)?{
?//提示輸入刪除學生的ID
?System.out.println("請輸入要刪除的學生ID:");
?String?ID?=?b.next();
?//判斷該ID是否有對應的學生對象
?Student?st?=?students.get(ID);
?if?(st?==?null)?{
//提示輸入的ID并不存在
?System.out.println("該ID并不存在!");
?continue;
?}
?students.remove(ID);
?System.out.println("成功刪除學生:"+st.name);
?break;
}
}
/**
?*?通過entrySet方法來遍歷Map
?*?
?*?@param?args
?*/
public?void?testEntrySet(){
//通過entrySet方法,返回Map中的所有鍵值對
Set<Entry<String,Student>>?entrySet?=?students.entrySet();
System.out.println("刪除后還剩"+entrySet.size()+"名學生,分別是:");
for?(Entry<String,?Student>?entry?:?entrySet)?{
System.out.print("鍵值:"+entry.getKey()+",");
System.out.println("姓名:"+entry.getValue().name);
}
}
/**
?*?利用put方法修改Map中的已有映射
?*?@param?args
?*/
public?void?testModify(){
//提示輸入要修改的學生ID
System.out.println("請輸入要修改的學生ID:");
a?=?new?Scanner(System.in);
while?(true)?{
//取得從鍵盤輸入的學生ID
String?stuID?=?a.next();
//從students中查找該學生ID對應的學生對象
Student?student?=?students.get(stuID);
}
}
public?static?void?main(String[]?args)?{
//?TODO?Auto-generated?method?stub
MapTest?mt?=?new?MapTest();
mt.testPut();
mt.testKeySet();
mt.testRemove();
mt.testEntrySet();
}
}為什么我的輸出順序是根據輸入的id來的啊,每次都是一樣的1,2,3的順序,N次了
2017-08-13
只是湊巧,上面這個老哥已經說很清楚了
2017-07-20
湊巧而已,多試幾次再看看,
HashMap是無序的,TreeMap是有序的