1. 本週學習總結
1.1 以你喜歡的方式(思維導圖或其他)歸納總結集合與泛型相關內容。
1.2 選做:收集你認為有用的代碼片段
- 1、泛型簡介:同一個代碼可以被不同的對象重用
- 2、使用泛型的好處:允許指定集合中元素的類型,這樣就可以避免使用有風險的
強制類型轉換,並且如果在使用過程中有出錯的話在編譯的
時候就能發現,不需要等到運行的時候才能知道錯誤。 - 3、使用泛型的約束與侷限性:不能使用基本類型
2. 書面作業
1、List中指定元素的刪除
題集jmu-Java-05-集合之4-1
1.1 實驗總結
答:這題嘛,在實驗課上寫的,基本上就是根據老師講的寫的,可能自己比較笨吧還是用了挺長時間才寫出來的,
刪除那一塊一開始就沒弄懂,後面才知道是自己寫重瞭然後就一直不能使用,不過最後還是寫出來了。
1.2 截圖你的提交結果(出現學號)
2、統計文字中的單詞數量並按出現次數排序(儘量不要出現代碼)
題集jmu-Java-05-集合之5-3 統計文字中的單詞數量並按出現次數排序
2.1 偽代碼(簡單寫出大體步驟)
while(sc.hasNext()){
String key = sc.next();
if(判斷輸入是否結束){
break;
}
add(添加)
if(判斷是否有一樣的單詞){
有value加一
沒有value為一
}
if(比較最後value的大小,若相等){
按照key字母排序輸出
}
else{
按照value大小輸出
}
for(<10){
輸出前10個單詞和他的value
}
}
2.2 實驗總結
答:一開始在實驗課上並沒有寫出來,後面根據老師給的代碼再結合5-2的實驗,但這題是用map來寫的,
其實老師給的代碼挺全的了,只要把後面排序的問題和前面輸入添加一下就可以用了。
2.3 截圖你的提交結果(出現學號)
3、倒排索引(儘量不要出現代碼)
題集jmu-Java-05-集合之5-4
3.1 偽代碼(簡單寫出大體步驟)
輸入的時候和前面兩題一樣
//判斷
while(sc.hasNext()){
for(int i=0;i<lineword.length;i++){ //對行進行檢索
if(word contains key){
value++
輸出所在行數與所在行數的所有信息
}
輸出found 0 results
}
}
3.2 實驗總結
答:剛開始看到題目的時候感覺和前面的兩題差不多,但是!那只是感覺,並不知如何下手
知道要用Map,可是就是不知道怎麼寫啊,怎麼輸出整個單詞。過程很艱辛,結局很滿意。
3.3 截圖你的提交結果(出現學號)
4、Stream與Lambda
編寫一個Student類,屬性為:
private Long id;
private String name;
private int age;
private Gender gender;//枚舉類型
private boolean joinsACM; //是否參加過ACM比賽
創建一集合對象,如List,內有若干Student對象用於後面的測試。
4.1 使用傳統方法編寫一個方法,將id>10,name為zhang, age>20, gender為女,參加過ACM比賽的學生篩選出來,放入新的集合。在main中調用,然後輸出結果。
private static List<Student> Search(List<Student> list) {
List<Student> list1 = new ArrayList<Student>();
for(Student student:list){
if(student.getId()>10&&student.getName().equals("zhang")&&student.getAge()>20
&&student.getGender().equals(Gender.female)&&student.isjionsACM()){
list1.add(student);
}
}
return list1;
}
4.2 使用java8中的stream(), filter(), collect()編寫功能同4.1的函數,並測試。
newlist=(ArrayList<Student>) list.stream().filter(l->l.getId()>10&&l.getName().equals("zhang")&&l.getAge()>20&&l.getGender().equals(Gender.女)&&l.isJoinsACM()==true).collect(Collectors.toList());
for (Student student : newlist) {
System.out.println(student);
}
4.3 構建測試集合的時候,除了正常的Student對象,再往集合中添加一些null,然後重新改寫4.2,使其不出現異常。
答:在原來判斷該的基礎上加一個student!=null即可。
5、泛型類:GeneralStack
題集jmu-Java-05-集合之5-5 GeneralStack
5.1 GeneralStack接口的代碼
interface GeneralStack<T> {
public T push(T item);
public T pop();
public T peek();
public boolean empty();
public int size();
}
5.2 結合本題,説明泛型有什麼好處
答:好處啊,就是不用在定義一個函數是在什麼類型下使用的,這樣就各個類型的都可以重複使用
同一個方法了。
5.3 截圖你的提交結果(出現學號)
這題我在eclipse上運行的答案是對的,但是在pta上一直不能通過,問了好多同學還是找不出來,真不知道哪裏錯了,我能怎麼辦我也很絕望啊。
6、泛型方法
6.1 編寫方法max,該方法可以返回List中所有元素的最大值。List中的元素必須實現Comparable接口。編寫的max方法需使得String max = max(strList)可以運行成功,其中strList為List<String>類型。也能使得Integer maxInt = max(intList);運行成功,其中intList為List<Integer>類型。
3. 碼雲上代碼提交記錄及PTA實驗總結
題目集:jmu-Java-05-集合
3.1. 碼雲代碼提交記錄
在碼雲的項目中,依次選擇“統計-Commits歷史-設置時間段”, 然後搜索並截圖