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

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

關于set無序的問題,求助大佬

https://img1.sycdn.imooc.com//5bf172e000018d8109210917.jpg如圖,為什么我每次輸入的順序都是一樣的呢?不是說Set集合是無序的嗎? 求助!謝謝

正在回答

2 回答

package?Test;

import?java.util.*;

public?class?SetTest?{

????//?創建一個List類型帶有Course泛型的coursesToSelect屬性
????public?List<Course>?coursesToSelect;

????//創建一個構造器
????public?SetTest()?{
????????//初始化coursesToSelect的屬性
????????coursesToSelect?=?new?ArrayList<Course>();
????}

????/*
?????*?用于往coursesToSelect中添加備選課程
?????*/
????public?void?testAdd()?{
????????//?創建一個課程對象,并通過調用add方法,添加到備選課程List中
????????Course?cr1?=?new?Course("1",?"數據結構");
????????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",?"離散數學"),?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",?"高等數學"),?new?Course("6",?"大學英語")?};
????????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();
????????//?創建一個學生對象
????????Student?student?=?new?Student("1",?"小明");
????????System.out.println("歡迎學生:"?+?student.getName()?+?"選課!");
????????//?創建一個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是否對應
????????????????????student.getCourses().add(cr);?//?如果對應則添加
????????????????????/**
?????????????????????*?Set中,添加某個對象,無論添加多少次,?最終只會保留一個該對象(的引用),?并且,保留的是第一次添加的那一個
?????????????????????*/
????????????????????//?student.courses.add(null);
????????????????????student.getCourses().add(cr);
????????????????}
????????????}
????????}
????????st.testForEachForSet(student);
????}

????public?void?testForEachForSet(Student?student)?{?//?將Student類型的student作為參數傳遞進該方法
????????//?打印輸出,學生所選的課程!
????????System.out.println("共選擇了:"?+?student.getCourses().size()?+?"門課程!");
//????????Set<Course>?set?=?student.getCourses();
????????for?(Course?cr?:?student.getCourses())?{?//Courses需要加泛型,不然報錯,或者像上面代碼那樣
????????????//set中的元素輸出的是無序的并不可重復的
????????????System.out.println("選擇了課程:"?+?cr.getId()?+?":"?+?cr.getName());
????????}
????}
}

你可以參考下

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

慕姐4925769

我寫的都是私有的 新學者寫代碼最好養成良好的習慣
2018-11-21 回復 有任何疑惑可以回復我~

是無序的,有序set可以參照SortedSet


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

舉報

0/150
提交
取消
Java入門第三季
  • 參與學習       409767    人
  • 解答問題       4543    個

Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧

進入課程

關于set無序的問題,求助大佬

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

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

幫助反饋 APP下載

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

公眾號

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