1. 本週學習總結

1.1 以你喜歡的方式(思維導圖或其他)歸納總結集合與泛型相關內容。
1.2 選做:收集你認為有用的代碼片段

  • 1、泛型簡介:同一個代碼可以被不同的對象重用
  • 2、使用泛型的好處:允許指定集合中元素的類型,這樣就可以避免使用有風險的
    強制類型轉換,並且如果在使用過程中有出錯的話在編譯的
    時候就能發現,不需要等到運行的時候才能知道錯誤。
  • 3、使用泛型的約束與侷限性:不能使用基本類型

2. 書面作業

1、List中指定元素的刪除

題集jmu-Java-05-集合之4-1
1.1 實驗總結

答:這題嘛,在實驗課上寫的,基本上就是根據老師講的寫的,可能自己比較笨吧還是用了挺長時間才寫出來的,
       刪除那一塊一開始就沒弄懂,後面才知道是自己寫重瞭然後就一直不能使用,不過最後還是寫出來了。

1.2 截圖你的提交結果(出現學號)

java泛型集合賦值_Java

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 截圖你的提交結果(出現學號)

java泛型集合賦值_Java_02

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 截圖你的提交結果(出現學號)

java泛型集合賦值_Java_03

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;
	}

java泛型集合賦值_List_04

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上一直不能通過,問了好多同學還是找不出來,真不知道哪裏錯了,我能怎麼辦我也很絕望啊。

java泛型集合賦值_java泛型集合賦值_05

6、泛型方法

6.1 編寫方法max,該方法可以返回List中所有元素的最大值。List中的元素必須實現Comparable接口。編寫的max方法需使得String max = max(strList)可以運行成功,其中strList為List<String>類型。也能使得Integer maxInt = max(intList);運行成功,其中intList為List<Integer>類型。

java泛型集合賦值_Java_06

java泛型集合賦值_List_07

3. 碼雲上代碼提交記錄及PTA實驗總結

題目集:jmu-Java-05-集合

3.1. 碼雲代碼提交記錄

在碼雲的項目中,依次選擇“統計-Commits歷史-設置時間段”, 然後搜索並截圖

java泛型集合賦值_泛型_08