set部分,為什么照著老師的寫,結果不一樣
照著老師視頻里寫的,功能也都實現了,但是并沒有每次運行程序輸出順序都不同,而是下圖這樣每次都是142
代碼為
package?com.imooc.collection;import?java.util.Arrays;import?java.util.Iterator;import?java.util.List;import?java.util.ArrayList;import?java.util.Scanner;public?class?SetTest?{ public?List<Course>?coursesToSelect; public?SetTest()?{ this.coursesToSelect?=?new?ArrayList<Course>(); } public?void?testAdd()?{ //?創(chuàng)建一個課程對象,并通過調用add方法, //?添加到備選課程Lis中 Course?cr1?=?new?Course("1",?"數據結構"); coursesToSelect.add(cr1); Course?temp?=?(Course)?coursesToSelect.get(0); System.out.println("添加了課程:"?+?temp.id?+?"?"?+?temp.name); Course?cr2?=?new?Course("2",?"C語言"); coursesToSelect.add(0,?cr2); Course?temp2?=?(Course)?coursesToSelect.get(0);// System.out.println("添加了課程:"?+?temp2.id?+?"?"?+?temp2.name); //?以下兩行代碼會拋出數組越界異常// Course?cr3?=?new?Course("3","test");// coursesToSelect.add(3,cr3); 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);// System.out.println("添加了兩門課程:"?+?temp3.id?+?":"?+?temp3.name// +?";"?+?temp4.id?+?":"?+?temp4.name); 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);// System.out.println("添加了兩門課程:"?+?temp5.id?+?":"?+?temp5.name// +?";"?+?temp6.id?+?":"?+?temp6.name);// coursesToSelect.add(new?Course("1","數據結構")); } /** *?通過迭代器來遍歷List *? *?@param?args */ public?void?testIterator()?{ //?通過集合的iterator方法,取得迭代器的實例 Iterator?it?=?coursesToSelect.iterator(); System.out.println("有如下課程待選(通過迭代器訪問)"); while?(it.hasNext())?{ Course?cr?=?(Course)?it.next(); System.out.println("課程"?+?cr.id?+?":"?+?cr.name); } } /** *?通過foreach來遍歷List *? *?@param?args */ public?void?testForEach()?{ System.out.println("有如下課程待選(通過foreach訪問)"); for?(Object?obj?:?coursesToSelect)?{ Course?cr?=?(Course)?obj; System.out.println("課程"?+?cr.id?+?":"?+?cr.name); } } public?static?void?main(String[]?args)?{ //?TODO?Auto-generated?method?stub SetTest?st?=?new?SetTest(); st.testAdd(); st.testForEach(); //創(chuàng)建一個學生對象 Student?student?=?new?Student("1","小明"); System.out.println("歡迎學生?"?+?student.name?+?"選課"); //創(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.id.equals(courseId))?{ student.courses.add(cr); /** *?Set中,添加某個對象,無論添加多少次 *?最終都只會保留一個該對象(的引用) *?并且,保留的是第一次添加的那一個 *?還可以像以下這樣添加null,但實際應用沒什么意義 *?student.courses.add(null); */ student.courses.add(cr); } } } st.testForEachForSet(student); } public?void?testForEachForSet(Student?student)?{ //打印輸出,學生所選的課程 System.out.println("共選擇了:"?+?student.courses.size()?+?"門課程"); for?(Course?cr?:?student.courses)?{ System.out.println("選擇了課程:"?+?cr.id?+?":"?+?cr.name); } }}
2019-09-12
java的jdk新的版本對原有的一些方法進行了改動。現在是一樣的
2019-09-05
同問,我輸入123,輸出都213不變的,什么情況
2019-08-22
set集合是無序集合? ?沒有固定順序
2019-08-09
Set?是無序的,在輸入后記錄是無序,所以輸出是也是無序的