201521123118《java程序與設計》第8周學習總結

1. 本週學習總結

1. 以你喜歡的方式(思惟導圖或其餘)概括總結集合與泛型相關內容。

2. 書面做業

1. List中指定元素的刪除(題目4-1)

1.1 實驗總結
Scanner sc = new Scanner(line);對這個代碼還不是很理解;在刪除元素的時候,第一次我直接使用了remove的方法,結果發現答案不同,這種方式的問題在於,刪除某個元素後,list的大小發生了變化,而你的索引也在變化,因此會致使你在遍歷的時候漏掉某些元素。好比當你刪除第1個元素後,繼續根據索引訪問第2個元素時,由於刪除的關係後面的元素都往前移動了一位,因此實際訪問的是第3個元素。所以,這種方式能夠用在刪除特定的一個元素時使用,但不適合循環刪除多個元素時使用,因此後面改用了iterator遍歷,結合.next()和.remove()方法;也能夠經過foreach方法、從表尾開始向表頭判斷刪除。java

2. 統計文字中的單詞數量並按出現次數排序(題目5-3)

2.1 僞代碼(簡單寫出大致步驟)函數

for(String e :Line){
            int flag=0;
            for(String w :count.wordset){
                if(e.equals(w)){
                    flag=1;
                    Integer n =count.wordmap.get(e)+1;
                    count.wordmap.put(e,n);
                    break;
                    }
            }
            if(flag==0){
                count.wordset.add(e);
                count.wordmap.put(e, 1);
            }
        }

2.2 實驗總結
對Map有所理解了,不過還不知道如何對Map進行排序,因此此次沒作完整。學習

3. 倒排索引(題目5-4)

3.1 截圖你的提交結果(出現學號)
測試

3.2 僞代碼(簡單寫出大致步驟)code

TreeMap<String,TreeSet<Integer>> treemap = new TreeMap<String,TreeSet<Integer>>();
Scanner input = new Scanner(str);
            while(input.hasNext()){
                String string=input.next();
                if(treemap.containsKey(string)){
                    treemap.get(string).add(count);
                }
                else{
                    TreeSet<Integer> treeset = new TreeSet<Integer>();
                    treeset.add(count);
                    treemap.put(string, treeset);
                }
            }
            input.close();
            count++;

3.3 實驗總結
用TreeMap的排序功能使用起來比較方便;用一個map映射,存放這一整行的信息和行數,讀取每一行的每一個單詞,key爲String value爲行。對象

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中調用,而後輸出結果。
4.2 使用java8中的stream(), filter(), collect()編寫功能同4.1的函數,並測試。
4.3 構建測試集合的時候,除了正常的Student對象,再往集合中添加一些null,而後從新改寫4.2,使其不出現異常。blog

5. 泛型類:GeneralStack(題目5-5)

5.1 截圖你的提交結果(出現學號)排序

5.2 GeneralStack接口的代碼索引

interface GeneralStack<T> {
    public T push(T item);            
    public T pop();                 
    public T peek();                
    public boolean empty();
    public int size();     
}

5.3 結合本題,說明泛型有什麼好處接口

  1. 今後無需使用有風險的強制類型轉換
  2. 錯誤在編譯階段就能發現,而不用等到運行時才發現出錯

6. 泛型方法

基礎參考文件GenericMain,在此文件上進行修改。
6.1 編寫方法max,該方法能夠返回List中全部元素的最大值。List中的元素必須實現Comparable接口。編寫的max方法需使得String max = max(strList)能夠運行成功,其中strList爲List 類型。也能使得Integer maxInt = max(intList);運行成功,其中intList爲List 類型。

6.2 選作:現有User類,其子類爲StuUser,且均實現了Comparable接口。編寫方法max1,基本功能同6.1,並使得max1(stuList);能夠運行成功,其中stuList爲List 類型。
6.3 選作:編寫int myCompare(T o1, T o2, Comparator c)方法,該方法能夠比較User對象及其子對象,傳入的比較器c既能夠是Comparator ,也能夠是Comparator 。注意:該方法聲明未寫全,請自行補全。

3. 碼雲代碼提交記錄

相關文章
相關標籤/搜索