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

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

為什么我每次輸入的學生ID和姓名都是有順序的,不是應該是是無序的嗎?

public?class?MapTest?{
????public?Map<String?,Student>?student;
????public?MapTest(){
????????this.student?=?new?HashMap<String?,Student>();
????}
????public?void?testPut(){
????????Scanner?console?=?new?Scanner(System.in);
????????int?i?=?0;
????????while(i<3){
????????????System.out.println("請輸入學生ID");
????????????String?ID?=?console.next();
????????????Student?st?=?student.get(ID);
????????????if(st?==?null){
????????????????System.out.println("請輸入學生姓名");
????????????????String?name?=?console.next();
????????????????Student?newStudent?=?new?Student(ID,name);
????????????????student.put(ID,newStudent);
????????????????System.out.println("成功添加學生:"+student.get(ID).name);
????????????????i++;
????????????}else?{
????????????????System.out.println("該學生的ID已被占用");
????????????????continue;
????????????}
????????}
????}
????public?void?testKeySet(){
????????//返回所有key的集合
????????Set<String>?keySet=student.keySet();
????????for?(String?stuId:keySet)?{
????????????Student?st?=?student.get(stuId);
????????????if(st!=null){
????????????????System.out.println("學生"+st.name);
????????????}
????????}
????}
????public?void?testRemove(){
????????System.out.println("請輸入要刪除的學生ID");
????????Scanner?console?=?new?Scanner(System.in);
????????while?(true)?{
????????????String?ID?=?console.next();
????????????Student?st?=?student.get(ID);
????????????if?(st?==?null)?{
????????????????System.out.println("該ID不存在");
????????????????continue;
????????????}
????????????student.remove(ID);
????????????System.out.println("成功刪除學生:"+st.name);
????????????break;
????????}
????}

????public?void?testEntrySet(){
???????//返回所有鍵值對的集合
???????Set<Map.Entry<String,Student>>?entrySet?=?student.entrySet();
????????for?(Map.Entry<String,Student>?entry:entrySet)?{
????????????System.out.println("取得鍵為:"+entry.getKey());
????????????System.out.println("對應的值為:"+entry.getValue().name);
????????}
????}

????public?static?void?main(String[]?args)?{
????????MapTest?mt?=new?MapTest();

????????mt.testPut();
????????mt.testKeySet();
????????mt.testRemove();
????????mt.testEntrySet();
????}
}


正在回答

6 回答

我也一樣,懷疑是JDK版本的問題

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

我引用下別人的話:在Java中無序指的是Java語言沒有規定某個容器按什么順序遍歷,在不同的Java虛擬機上對某個容器的實現是不一樣,比如說運行在Windows和Linux上的Java虛擬機對HashSet的遍歷順序可能不太一樣,但對同一種虛擬機來說遍歷輸出都是一樣的。而不是我們日常所理解的"無序就是亂序"的意思。


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

我也是這樣的問題

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

那為什么我每次輸出都是按照我輸入的順序來的呢

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

慕仰9267954

我感覺它是根據id大小來輸出的
2019-11-21 回復 有任何疑惑可以回復我~

無序是指不按照插入順序排序,具體是根據一種哈希算法來規定儲存位置的,所以你每次按同樣的順序插入,取出來的順序都是一定的

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

辰_宿

那為什么我每次輸出都是按照我輸入的順序來的呢
2019-11-19 回復 有任何疑惑可以回復我~

你輸入可以無序呀,你可以自己嘗試一下呀,比如他214,你124呀

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

舉報

0/150
提交
取消

為什么我每次輸入的學生ID和姓名都是有順序的,不是應該是是無序的嗎?

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

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

幫助反饋 APP下載

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

公眾號

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