1. 程式人生 > >201621123042《java程序設計》第九次作業

201621123042《java程序設計》第九次作業

幫助 .cn 一起 喜歡 不同類 技術分享 img 一個 map對象

1. 本周學習總結

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

1.2 選做:收集你認為有用的代碼片段

2. 書面作業

本次作業題集集合

1. List中指定元素的刪除(題集題目)
1.1 實驗總結。並回答:列舉至少2種在List中刪除元素的方法。
答:創建一個list,add輸入元素,用list.get(i).equals(str)來判斷是否要刪除元素,註意該題刪除元素的順序需要從後面開始,如果從前面開始會因為i的變化導致漏掉一些元素。
刪除List中元素的方法:
(1)第一種方法就是自己用的,從後面開始遍歷,這樣的話i值就不會受影響

技術分享圖片

(2)第二種刪除方法就是使用叠代器進行刪除操作。
技術分享圖片

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

2.1 偽代碼(不得復制代碼,否則扣分)
答:
這題需要創建TreeMap對象,添加元素以"!!!!!"結束;
對每行元素使用split分割;
判斷單詞Map中是否存在該單詞,存在則不添加,value值加一;若不存在則添加該元素,value值為一;
使用Collection.sort對List進行排序;
最後輸出key和value;

2.2 實驗總結
添加元素的過程;
技術分享圖片

建立內部類,比較;
技術分享圖片

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

本題較難,做不出來不要緊。但一定要有自己的思考過程,要有提交結果。
3.1 截圖你的代碼運行結果
技術分享圖片

3.2 偽代碼(不得復制代碼,否則扣分)
1.創建Map對象map和ArrayList對象line
2.循環讀取單詞,當讀入單詞為"!!!!!"時,退出循環,否則再進行判斷,如果map中沒有包含此單詞,則添加單詞到map中並把相對應的行數值添加到value,如果當前行數不存在value中,那麽把當前行數添加到value中。
3.建立一個叠代器,輸出map中的所有內容,輸入一行查詢關鍵字,以空格為分割。
4.判斷map中是否同時存在指定單詞,不存在則輸出found 0 results,
否則的話求指定單詞的value的交集,如果交集為0,輸出found 0 results,否則輸出交集及交集中的數字對應的行數。

3.3 實驗總結
答:這道題偽代碼中的主要的思路是靠宿舍的一位大佬講解的,通過他的講解大概的了解了這道題的思路,然後自己先嘗試著寫了代碼,但是有幾個重要的步驟搜編譯錯誤,有些功能沒實現所以只能參考大佬的代碼。

4.Stream與Lambda

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

4.1 使用傳統方法編寫一個搜索方法List<Student> search(Long id, String name, int age, Gender gender, boolean joinsACM)

,然後調用該方法將id>某個值,name為某個值, age>某個值, gender為某個值,參加過ACM比賽的學生篩選出來,放入新的集合。在main中調用,然後輸出結果。(截圖:出現學號、姓名)

search過程
技術分享圖片

主函數實現
技術分享圖片

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

技術分享圖片

5. 泛型類:GeneralStack

題集jmu-Java-05-集合之GeneralStack
5.1 GeneralStack接口的代碼

技術分享圖片

5.2 結合本題與以前作業中的ArrayListIntegerStack相比,說明泛型有什麽好處
答:在ArrayListIntegerStack中,棧中的元素只能是Integer類型的,有局限性,而使用泛型編寫代碼,可以被不同類型的對象使用,可以不使用強制類型轉換,而且錯誤在編譯階段就能發現。

6. 選做:泛型方法

基礎參考文件GenericMain,在此文件上進行修改。
6.1 編寫方法max,該方法可以返回List中所有元素的最大值。List中的元素必須實現Comparable接口。編寫的max方法需使得String max = max(strList)可以運行成功,其中strList為List<String>類型。也能使得Integer maxInt = max(intList);運行成功,其中intList為List<Integer>類型。註意:不得直接調用Collections.max函數。
6.2

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

選做:編寫int myCompare(T o1, T o2, Comparator c)方法,該方法可以比較兩個User對象,也可以比較兩個StuUser對象,傳入的比較器c既可以是Comparator<User>,也可以是Comparator<StuUser>。註意:該方法聲明未寫全,請自行補全。

7. 選做:逆向最大匹配分詞算法

集合實驗文件中的第07次實驗(集合).doc文件,裏面的題目6.
7.1 寫出偽代碼(不得直接復制代碼)
7.2 截圖你的代碼運行結果。

3.碼雲及PTA

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

3.1. 碼雲代碼提交記錄

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

技術分享圖片

3.2 截圖PTA題集完成情況圖

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

3.3 統計本周完成的代碼量

需要將每周的代碼統計情況融合到一張表中。
技術分享圖片

技術分享圖片

自己的目標能實現嗎?
|周次|總代碼量|新增代碼量|總文件數|新增文件數|
|--------|------|-------|------|-------|
|1|44|44|2|2|
|2|213|213|10|5|
|3|417|204|10|5|
|5|676|259|17|7|
|6|1071|405|24|7|
|7|1780|709|30|6|
|8|1900|120|35|5|
|9|2335|435|41|6|
|10|2767|432|48|7|

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

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

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

選做:5.使用Java解決實際問題

有n門課程,每個學生對每門課程都有幾個不懂的問題(每題都有標號)。教師期望對所有學生的問題進行歸類,首先對問題按課程分類,在某類中又將同一個學生的題目歸類在一起。現有的操作流程,是每個學生把自己的各科目中不懂得題目按課程分類號後發給學習委員,學習委員進行統一匯總。現在希望編寫一個程序,幫助學習委員分類,並統計每門課程中哪些題目不懂率最高。嘗試寫出解決該問題的大概步驟?每個學生發給學習委員的文件內容應遵循一定規範方便程序處理,嘗試寫出該規範。

201621123042《java程序設計》第九次作業