201621123010《Java程序設計》第9周學習總結


1. 本週學習總結

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


2. 書面做業

本次做業題集集合java


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

1.1 實驗總結。並回答:列舉至少2種在List中刪除元素的方法。

:該題主要問題是要解決輸入時的一個或多個空格問題。能夠爲line建立一個掃描器in,再以in.next()的方式讀取。也可使用正則表達式String[] strings = Line.split(" +");的方法讀取。
在List中刪除元素可使用list.remove()方法刪除元素,或者使用list.clear()方法移除列表中的全部元素。正則表達式


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

2.1 僞代碼(不得複製代碼,不然扣分)

Map<String,Integer> map = new Map<單詞,出現次數>;
    while(true){
        if(逐個Next讀取內容爲"!!!!!")
            break;
        if(單詞不在Map中)
            map.put(單詞, 賦值爲1);
        if(單詞在Map中)
            map.put(單詞, 原value+1);
    }
    System.out.println(map.size());
    將Map中鍵值關係對應到List<String,Integer>中;
    Collections.sort(對List中元素先按Integer次數排序,次數相同再對String單詞排序);
    System.out.println(排序後內容);

2.2 實驗總結

:本題中主要的內容就是判斷Map中是否已包含正在操做的元素,並以此判斷是對Value值進行+1操做仍是生成一個新的Key。另外就是使用Map.Entry()Collections.sort()對Map進行排序。小程序


3. 倒排索引(題集題目)

本題較難,作不出來沒關係。但必定要有本身的思考過程,要有提交結果。數組

3.1 截圖你的代碼運行結果


3.2 僞代碼(不得複製代碼,不然扣分)

new Map<存放行數信息, 逐行存放文章語句>;
    new TreeSet<存放文章中全部的單詞內容>();
    while(true){
        if(文章下一行內容不爲"!!!!!")
            new List0.add(逐行讀取文章的內容);
        set.add(文章每一個單詞的內容);
        map.put(行數,存放對應行數單詞的List);}
    Set.iterator();
    for(小於Set的長度)
        new List1(存放單詞出現的行數信息);
            for(小於Map的長度){
                查找Map中的存放的每行的List的信息,若List中包含單詞,則List1添加該行的行號;}
        輸出Set中每一個單詞及包含該單詞出現的行號List;}
    while(hasnext){
        new List2.add(逐行讀取輸入的要查找的單詞信息,拆分紅單個單詞);
        Map.iterator();
        for(小於List2的長度){
            for(小於Map.size()){
                在Map中每次取出一行的內容;
                if(contains(List2中的全部元素))
                    標記該行並存儲;}
        }
        輸出編輯的行號信息及對應行數的內容;
    }

3.3 實驗總結

:本題中一開始便想到的是一個Key對應多個Value,後來查閱得知,Value除了存放基本的數據類型外,還能夠存放List數組,因此後來就基本使用了Map<Integer,List>。另外在這題中我使用了好幾個不一樣類型的List數組用於存放文章內容信息(有些存放逐行的信息,有些則存放每行中逐個單詞的信息)及行數信息等,所以在編寫過程當中要注意區分不一樣List的功能,避免弄混;我也對比過其餘同窗的方法,相比之下使用的就少得多。但對於同窗的代碼也不是很能理解,於是雖然東西複雜了點,但以爲本身的思路仍是相對容易理解些。學習


4.Stream與Lambda

編寫一個Student類,屬性爲:測試

private Long id;
private String name;
private int age;
private Gender gender;//枚舉類型
private boolean joinsACM; //是否參加過ACM比賽

建立一集合對象,如List ,內有若干Student對象用於後面的測試。 設計

4.1 使用傳統方法編寫一個搜索方法

List<Student> search(List<Student> stuList, Long id, String name, int age, Gender gender, boolean joinsACM),而後調用該方法將id>某個值,name爲某個值, age>某個值, gender爲某個值,參加過ACM比賽的學生篩選出來,放入新的集合。在main中調用,而後輸出結果。(截圖:出現學號、姓名)
傳統方法
3d

4.2 使用java8中的stream(), filter(), collect()編寫功能同4.1的代碼,並測試(要出現測試數據)。構建測試集合的時候,除了正常的Student對象,再往集合中添加一些null,你編寫的方法應該能處理這些null而不是拋出異常。(截圖:出現學號)

使用java8中的stream(), filter(), collect()編寫
code


5. 泛型類:GeneralStack

題集jmu-Java-05-集合之GeneralStack對象

5.1 GeneralStack接口的代碼

5.2 結合本題與之前做業中的ArrayListIntegerStack相比,說明泛型有什麼好處

:在之前做業中的ArrayListIntegerStack中,將進出棧等方法都定義爲Integer類型了,因此只能對Integer類型對象進行操做,操做對象單一。
而在本題中,對方法採用了泛型定義,能夠對多種類型對象進行棧的操做,使得棧的功能更加具體,對於棧來講,無論內部存放的是什麼類型的數據,均可以實現這些具體的操做。且泛型容許指定集合中元素的類型,這樣能夠得到強類型,在代碼編譯階段就能夠發現報錯,無需再使用有風險的強制類型轉換。


3.碼雲及PTA

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

3.1. 碼雲代碼提交記錄

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

3.2 截圖PTA題集完成狀況圖

須要有兩張圖(1. 排名圖。2.PTA提交列表圖)

3.3 統計本週完成的代碼量

須要將每週的代碼統計狀況融合到一張表中。
本身的目標能實現嗎?
開學初我爲本身定的目標是每週預估代碼量200行,一學期4000行左右,從目前的進度來看,基本上都能超出每週兩百行的代碼量,當前代碼量已經3000行左右,離實現開學初定的小目標已經不遠了(っ•̀ω•́)っ✎⁾⁾

周次 總代碼量 新增代碼量 總文件數 新增文件數
1 90 90 5 5
2 322 232 11 6
3 652 330 16 5
4 946 294 21 5
5 1347 401 26 5
6 1591 244 28 2
7 2118 527 31 3
8 2627 509 39 8
9 2912 285 42 3

4. 評估本身對Java的理解程度

嘗試從如下幾個維度評估本身對Java的理解程度

維度 程度
語法 PTA的題目大部分能解決,可是須要花上必定的時間,每次作題都能碰到些新的內容能夠學習
面向對象設計能力 通過思考後,能大體上把握使用面向對象思想爲所要解決的問題建模的方向
應用能力 能夠解決PTA內半數以上習題,課外應該也能夠寫一些簡單的小程序
至今爲止代碼行數 2912
相關文章
相關標籤/搜索