第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

為什么用keySet遍歷map,得到了有序結(jié)果?

為什么用keySet遍歷map,得到了有序結(jié)果?

iPotato94 2016-01-17 00:01:01
package?com.imooc.test; import?java.util.HashMap; import?java.util.Map; import?java.util.Set; public?class?TestMap?{ public?Map<Integer,?String>?map; public?TestMap()?{ //?TODO?Auto-generated?constructor?stub map?=?new?HashMap<Integer,?String>(); } public?void?testPut(){ map.put(3,?"爸爸"); map.put(1,?"孫子"); map.put(4,?"爺爺"); map.put(2,?"兒子"); } public?void?testKeySet(){ Set<Integer>?keySet?=?map.keySet(); for(Integer?key?:?keySet){ String?st?=?map.get(key); if?(st?!=?null) System.out.println(st); } } public?static?void?main(String[]?args)?{ //?TODO?Auto-generated?method?stub TestMap?tm?=?new?TestMap(); tm.testPut(); tm.testKeySet(); } }陳碼農(nóng)?【Java入門第三季】- 【第5章】 - 【5-2學(xué)生選課---使用Map添加學(xué)生】package?com.imooc.collection_map; import?java.util.HashMap; import?java.util.Map; import?java.util.Map.Entry; import?java.util.Scanner; import?java.util.Set; public?class?MapTest?{ /** ?*?用來(lái)承裝學(xué)生類型的對(duì)象 ?*/ public?Map<String,?Student>?students; /** ?*?在構(gòu)造器中初始化students屬性 ?*/ public?MapTest()?{ this.students?=?new?HashMap<String,?Student>(); } /** ?*?測(cè)試添加:?輸入學(xué)生ID,?判斷是否被占用?若未被占用,?則輸入姓名,?創(chuàng)建新學(xué)生對(duì)象?并且添加到students中 ?*/ public?void?testPut()?{ //?創(chuàng)建一個(gè)Scanner對(duì)象,?用來(lái)獲取輸入的學(xué)生ID和姓名 Scanner?scan?=?new?Scanner(System.in); int?i?=?0; while?(i?<?3)?{ System.out.println("請(qǐng)輸入學(xué)生ID:?"); String?ID?=?scan.next(); //?判斷該ID是否被占用 Student?st?=?students.get(ID); if?(st?==?null)?{ //?提示輸入學(xué)生姓名 System.out.println("請(qǐng)輸入學(xué)生姓名:?"); String?name?=?scan.next(); //?創(chuàng)建新的學(xué)生對(duì)象 Student?newStudent?=?new?Student(ID,?name); //?通過(guò)調(diào)用students的put方法,?添加?ID-學(xué)生?映射 students.put(ID,?newStudent); System.out.println("成功添加學(xué)生:"?+?students.get(ID).name); i++; }?else?{ System.out.println("該學(xué)生ID已被占用!"); continue; } } } /** ?*?通過(guò)keySet方法遍歷Map ?*/ public?void?testKeySet()?{ //?通過(guò)keySet方法,?返回Map中所有"鍵"的Set集合 Set<String>?keySet?=?students.keySet(); //?取得students的容量 System.out.println("總共有:"?+?students.size()?+?"個(gè)學(xué)生!"); //?遍歷keySet,?取得每一個(gè)鍵,?再調(diào)用get方法取得每個(gè)鍵對(duì)應(yīng)的value for?(String?stuId?:?keySet)?{ Student?st?=?students.get(stuId); if?(st?!=?null) System.out.println("學(xué)生:?"?+?st.name); } } /** ?*? ?*?@param?args ?*/ public?static?void?main(String[]?args)?{ //?TODO?Auto-generated?method?stub MapTest?mt?=?new?MapTest(); //?調(diào)用testPut() mt.testPut(); mt.testKeySet(); }package?com.imooc.collection_map; import?java.util.HashSet; import?java.util.Set; /** ?*?學(xué)生類 ?*? ?*?@author?KEN ?* ?*/ public?class?Student?implements?Comparable<Student>{ public?String?id; public?String?name; public?Set<Course>?courses;?//?List,?Queue,?Set?是?Collection的子接口 //Student構(gòu)造方法 public?Student(String?id,?String?name)?{ this.id?=?id; this.name?=?name; this.courses?=?new?HashSet<Course>(); } }
查看完整描述

3 回答

已采納
?
Its_forever

TA貢獻(xiàn)361條經(jīng)驗(yàn) 獲得超328個(gè)贊

剛剛格式亂了:

你是想說(shuō):老師的輸入順序是1,2,3為什么打印出來(lái)的卻是3,2,1吧??
還是我之前說(shuō)的,Set集合的無(wú)序性體現(xiàn)在輸入順序和輸出順序不一樣。?
比如:我這樣輸入?
學(xué)號(hào)為:1??再輸入姓名:Tom???????//一
學(xué)號(hào)為:3??再輸入姓名:xiaoming??//二
學(xué)號(hào)為:2??再輸入姓名:Jack??????//三?
輸出順序還是(3,2,1)。?
不論你怎么改變一,二,三的順序,輸出順序始終是(3,2,1)。?
這就是我說(shuō)的,Set的無(wú)序性體現(xiàn)在輸入順序和輸出順序不一致。


查看完整回答
2 反對(duì) 回復(fù) 2016-01-17
  • iPotato94
    iPotato94
    恩恩,這個(gè)無(wú)序性我明白了。 可是我這樣輸入 學(xué)號(hào)為:1 再輸入姓名:Tom //一 學(xué)號(hào)為:3 再輸入姓名:xiaoming //二 學(xué)號(hào)為:2 再輸入姓名:Jack //三 輸出順序還是(1,2,3)。 不是你的(3,2,1)。 請(qǐng)問(wèn)這個(gè)升序還是降序怎么控制?
  • iPotato94
    iPotato94
    不好意思,回復(fù)里不知道怎么改格式。
?
Its_forever

TA貢獻(xiàn)361條經(jīng)驗(yàn) 獲得超328個(gè)贊

關(guān)于set無(wú)序集合,它的無(wú)序性體現(xiàn)在不按照添加的時(shí)候的順序存儲(chǔ) 。

比如你的添加順序是這樣的:

????????map.put(3,?"爸爸");
????????map.put(1,?"孫子");
????????map.put(4,?"爺爺");
????????map.put(2,?"兒子");

如果他是有序的話那么他的輸出順序是不是就該是:

爸爸,孫子,爺爺,兒子

但是它卻輸出了:

孫子,兒子,爸爸,爺爺

這就是Set集合無(wú)序性的體現(xiàn),而不是輸出順序的無(wú)序性。

其實(shí)Set也是有序的,只是他的內(nèi)部是按著hashCode來(lái)排序的??雌饋?lái)無(wú)序而已。

你數(shù)字感覺(jué)的不明顯,用字符串排序就明顯一些了;

?public?static?void?main(String[]?args)?{
????????Collection?people?=?new?HashSet();
????????people.add("孫子");?//1
????????people.add("爺爺");?//2
????????people.add("兒子");??//3
????????people.add("爸爸"?);??//4
????????
????????Iterator?it?=?people.iterator();
????????while(it.hasNext()){
?????????String?test?=?(String)it.next();
?????????System.out.println(test);
????}
????}
????
???//?輸出為:爸爸?兒子?爺爺?孫子

你不論怎么改變1,2,3,4的順序,他的輸出都是不會(huì)變的。

以上是我個(gè)人理解的Set集合的無(wú)序性。

查看完整回答
1 反對(duì) 回復(fù) 2016-01-17
  • iPotato94
    iPotato94
    那在視頻【Java入門第三季】- 【第5章】 - 【5-2學(xué)生選課---使用Map添加學(xué)生】中,陳碼農(nóng)老師用了類似的方法,也用keySet輸出(Value)學(xué)生姓名,但是順序和(Key)學(xué)生ID的順序不一致,為什么? (陳碼農(nóng)老師的代碼我放在原問(wèn)題中了)
  • Its_forever
    Its_forever
    老師的輸入順序是1,2,3為什么打印出來(lái)的卻是3,2,1吧? 還是我之前說(shuō)的,Set集合的無(wú)序性體現(xiàn)在輸入順序和輸出順序不一樣。 比如:我這樣輸入 學(xué)號(hào)為:1 再輸入姓名:Tom //一 學(xué)號(hào)為:3 再輸入姓名:xiaoming //二 學(xué)號(hào)為:2 再輸入姓名:Jack //三 輸出順序還是(3,2,1)。 不論你怎么改變一,二,三的順序,輸出順序始終是(3,2,1)。 這就是我說(shuō)的,Set的無(wú)序性體現(xiàn)在輸入順序和輸出順序不一致。
  • 3 回答
  • 0 關(guān)注
  • 5826 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)