1. 程式人生 > >java week 9----- 集合與泛型

java week 9----- 集合與泛型

評估 -m 正常 面向對象思想 acm 元素 篩選 -o 內容

1. 本周學習總結

1.1 以你喜歡的方式(思維導圖或其他)歸納總結集合與泛型相關內容。

技術分享圖片

2. 書面作業

本次作業題集集合

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

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

答:remove中註意應該使用equals()方法輸入的str參數比較,而不是使用“==”,並且在remove過程中,在刪除當前元素後,要讓i自減。若不讓i自減,則會出現跳過下一個有可能符合條件的元素

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

2.1 偽代碼(不得復制代碼,否則扣分)

答:第一步:以字符串形式存儲輸入的文字
第二步:使用HashMap存儲字符串中某個鍵(Key)對應的值(Value)
第三步:覆蓋Collections.sort中的compare方法,使用if嵌套完成次數按照降序排序,如果次數相同,則按照鍵值的字母進行排序。

2.2 實驗總結

答:本題的重點在排序,在PTA上提交代碼時註意的是要刪除中文註釋,否則會出現編譯錯誤。

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

本題較難,做不出來不要緊。但一定要有自己的思考過程,要有提交結果。

3.1 截圖你的代碼運行結果

3.2 偽代碼(不得復制代碼,否則扣分)

答:這道題應該使用兩個“while”循環結構體,在第一個while循環中:以行的形式存儲文本,然後以TreeSet來存儲每一行中的每個單詞。
在第二個while循環中:首先對相應的字段進行關鍵字查找,如果相應字段為空,返回“found 0 results”,然後根據每一行打印出每一個單詞。

3.3 實驗總結

答:一定要學會使用TreeMap

TreeSet,以便進行排序。

4.Stream與Lambda

編寫一個Student類,屬性為:

private Long id; private String name; private int age; private Gender gender;//枚舉類型 private boolean joinsACM; //是否參加過ACM比賽
創建一集合對象,如List

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

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

5. 泛型類:GeneralStack

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

5.1 GeneralStack接口的代碼

5.2 結合本題與以前作業中的ArrayListIntegerStack相比,說明泛型有什麽好處

6. 選做:泛型方法

基礎參考文件GenericMain,在此文件上進行修改。

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

6.2 選做:現有User類,其子類為StuUser,且均實現了Comparable接口。編寫方法max1,基本功能同6.1,使得User user = max1(stuList);可以運行成功,其中stuList為List

6.3 選做:編寫int myCompare(T o1, T o2, Comparator c)方法,該方法可以比較兩個User對象,也可以比較兩個StuUser對象,傳入的比較器c既可以是Comparator

3.碼雲及PTA

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

3.1. 碼雲代碼提交記錄

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

3.2 截圖PTA題集完成情況圖

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

3.3 統計本周完成的代碼量

需要將每周的代碼統計情況融合到一張表中。
自己的目標能實現嗎?

4. 評估自己對Java的理解程度

嘗試從以下幾個維度評估自己對Java的理解程度

維度 程度
語法 PTA的題目已經能輕松搞定,沒有什麽難得倒我的語法問題
面向對象設計能力 能熟練使用面向對象思想為所要解決的問題建模
應用能力 可以使用Java編寫一些實用的小工具
至今為止代碼行數 5000

java week 9----- 集合與泛型