課程
/后端開發(fā)
/Java
/Java入門第三季
如圖,為什么我每次輸入的順序都是一樣的呢?不是說Set集合是無序的嗎? 求助!謝謝
2018-11-18
源自:Java入門第三季 4-11
正在回答
package?Test; import?java.util.*; public?class?SetTest?{ ????//?創(chuàng)建一個List類型帶有Course泛型的coursesToSelect屬性 ????public?List<Course>?coursesToSelect; ????//創(chuàng)建一個構(gòu)造器 ????public?SetTest()?{ ????????//初始化coursesToSelect的屬性 ????????coursesToSelect?=?new?ArrayList<Course>(); ????} ????/* ?????*?用于往coursesToSelect中添加備選課程 ?????*/ ????public?void?testAdd()?{ ????????//?創(chuàng)建一個課程對象,并通過調(diào)用add方法,添加到備選課程List中 ????????Course?cr1?=?new?Course("1",?"數(shù)據(jù)結(jié)構(gòu)"); ????????coursesToSelect.add(cr1); ????????Course?temp?=?(Course)?coursesToSelect.get(0); ????????Course?cr2?=?new?Course("2",?"C語言"); ????????coursesToSelect.add(0,?cr2); ????????Course?temp2?=?(Course)?coursesToSelect.get(0); ????????Course[]?course?=?{?new?Course("3",?"離散數(shù)學(xué)"),?new?Course("4",?"匯編語言")?}; ????????coursesToSelect.addAll(Arrays.asList(course)); ????????Course?temp3?=?(Course)?coursesToSelect.get(2); ????????Course?temp4?=?(Course)?coursesToSelect.get(3); ????????Course[]?course2?=?{?new?Course("5",?"高等數(shù)學(xué)"),?new?Course("6",?"大學(xué)英語")?}; ????????coursesToSelect.addAll(2,?Arrays.asList(course2)); ????????Course?temp5?=?(Course)?coursesToSelect.get(2); ????????Course?temp6?=?(Course)?coursesToSelect.get(3); ????} ????public?void?testForEach()?{ ????????System.out.println("有如下課程待選(通過for?each訪問):"); ????????for?(Object?obj?:?coursesToSelect)?{ ????????????Course?cr?=?(Course)?obj; ????????????System.out.println("課程:"?+?cr.getId()?+?":"?+?cr.getName()); ????????} ????} ????public?static?void?main(String[]?args)?{ ????????SetTest?st?=?new?SetTest(); ????????st.testAdd(); ????????st.testForEach(); ????????//?創(chuàng)建一個學(xué)生對象 ????????Student?student?=?new?Student("1",?"小明"); ????????System.out.println("歡迎學(xué)生:"?+?student.getName()?+?"選課!"); ????????//?創(chuàng)建一個Scanner對象,用來接收從鍵盤輸入的課程ID ????????Scanner?console?=?new?Scanner(System.in); ????????for?(int?i?=?0;?i?<?3;?i++)?{ ????????????System.out.println("請輸入課程ID"); ????????????String?courseId?=?console.next(); ????????????for?(Course?cr?:?st.coursesToSelect)?{ ????????????????if?(cr.getId().equals(courseId))?{//判斷鍵盤上輸入的和課程上的ID是否對應(yīng) ????????????????????student.getCourses().add(cr);?//?如果對應(yīng)則添加 ????????????????????/** ?????????????????????*?Set中,添加某個對象,無論添加多少次,?最終只會保留一個該對象(的引用),?并且,保留的是第一次添加的那一個 ?????????????????????*/ ????????????????????//?student.courses.add(null); ????????????????????student.getCourses().add(cr); ????????????????} ????????????} ????????} ????????st.testForEachForSet(student); ????} ????public?void?testForEachForSet(Student?student)?{?//?將Student類型的student作為參數(shù)傳遞進(jìn)該方法 ????????//?打印輸出,學(xué)生所選的課程! ????????System.out.println("共選擇了:"?+?student.getCourses().size()?+?"門課程!"); //????????Set<Course>?set?=?student.getCourses(); ????????for?(Course?cr?:?student.getCourses())?{?//Courses需要加泛型,不然報(bào)錯,或者像上面代碼那樣 ????????????//set中的元素輸出的是無序的并不可重復(fù)的 ????????????System.out.println("選擇了課程:"?+?cr.getId()?+?":"?+?cr.getName()); ????????} ????} }
你可以參考下
慕姐4925769
是無序的,有序set可以參照SortedSet
舉報(bào)
Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧
1 回答關(guān)于set 和map的無序問題
4 回答關(guān)于SET排序的問題
1 回答Set有序無序的問題
2 回答Set無序問題
2 回答關(guān)于entryset的問題,為什么我的沒執(zhí)行那個方法?求助大佬
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2018-11-21
你可以參考下
2018-11-18
是無序的,有序set可以參照SortedSet