package?com.imooc.collection;import?java.util.List;import?java.util.ArrayList;import?java.util.Arrays;import?java.util.Scanner;public?class?SetTest?{ public?List<Course>coursesToSelect; public?SetTest()?{ coursesToSelect=new?ArrayList<Course>(); } /** *?用于往coursesToSelect中添加備選課程 *?@param?args */ public?void?testAdd()?{ //創(chuàng)建一個(gè)課程對(duì)象,并通過(guò)調(diào)用add方法,添加到備選課程list中 Course?cr1?=?new?Course("1",?"數(shù)據(jù)結(jié)構(gòu)"); coursesToSelect.add(cr1); Course?temp?=?(Course)?coursesToSelect.get(0); //?System.out.println("添加了課程:"?+?temp.id?+?":"?+?temp.name); Course?cr2?=?new?Course("2",?"C語(yǔ)言"); coursesToSelect.add(0,?cr2); Course?temp2?=?(Course)?coursesToSelect.get(0); //?System.out.println("添加了課程:"?+?temp2.id?+?":"?+?temp2.name); //?coursesToSelect.add(cr1); //?Course?temp0?=?(Course)?coursesToSelect.get(2); //?System.out.println("添加了課程:"?+?temp.id?+?":"?+?temp.name); //?以下方法會(huì)拋出數(shù)組下標(biāo)越界異常 //?Course?cr3?=?new?Course("3",?"test"); //?coursesToSelect.add(4,?cr3); Course[]?course?=?{?new?Course("3",?"離散數(shù)學(xué)"),?new?Course("4",?"匯編語(yǔ)言")?}; coursesToSelect.addAll(Arrays.asList(course)); Course?temp3?=?(Course)?coursesToSelect.get(2); Course?temp4?=?(Course)?coursesToSelect.get(3); //?System.out.println("添加了兩門(mén)課程:"?+?temp3.id?+?":"?+ //?temp3.name?+?";"?+?temp4.id?+?":"?+?temp4.name); Course[]?course2?=?{?new?Course("5",?"高等數(shù)學(xué)"),?new?Course("6",?"大學(xué)英語(yǔ)")?}; coursesToSelect.addAll(2,?Arrays.asList(course2)); Course?temp5?=?(Course)?coursesToSelect.get(2); Course?temp6?=?(Course)?coursesToSelect.get(3); //?System.out.println("添加了兩門(mén)課程:"?+?temp5.id?+?":"?+ //?temp5.name?+?";"?+?temp6.id?+?":"?+?temp6.name) } /** *?通過(guò)for?each方法訪問(wèn)集合元素 *?@param?args */ public?void?testForEach()?{ System.out.println("有如下課程待選(通過(guò)for?each訪問(wèn)):"); for(Object?obj:coursesToSelect)?{ Course?cr?=(Course)obj; System.out.println("課程"+cr.id+":"+cr.name); } } /** *? *?@param?args */ public?static?void?main(String[]?args)?{ //?TODO?Auto-generated?method?stub SetTest?st=new?SetTest(); st.testAdd(); st.testForEach(); //創(chuàng)建一個(gè)學(xué)生對(duì)象 Student?student=new?Student("1",?"小明"); System.out.println("歡迎學(xué)生:"+student.name+"選課!"); //創(chuàng)建一個(gè)scanner對(duì)象,用來(lái)接收從鍵盤(pán)輸入的課程id Scanner?console?=new?Scanner(System.in); for?(int?i=0;i<3;i++)?{ System.out.println("請(qǐng)輸入課程id:"); String?courseId=console.next(); for(Course?cr:st.coursesToSelect)?{ if?(cr.id.equals(courseId))?{ student.courses.add(cr); /** *?set中,添加某個(gè)對(duì)象,無(wú)論添加多少次,最終只會(huì)保留一個(gè)該對(duì)象(的引用),并且,保留的是第一次添加的那一個(gè) */ //student.courses.add(null); student.courses.add(cr); } } } st.testForEachForSet(student); } public?void?testForEachForSet(Student?student)?{ //打印輸出,學(xué)生所選的課程! System.out.println("共選擇了"+student.courses.size()+"門(mén)課程"); for?(Course?cr?:student.courses)?{ System.out.println("選擇了課程:"+cr.id+":"+cr.name); } }}

2019-08-22
改完泛型之后 保存一下?
2019-06-02
在Set Test中轉(zhuǎn)換為Course沒(méi)?
2019-04-14
Student類(lèi)中的courses屬性沒(méi)有添加泛型<Course>,所以此處foreach遍歷的集合類(lèi)中還是Object類(lèi)型
2019-04-11
強(qiáng)制轉(zhuǎn)換一下試試