201621123040《Java程式設計》第九周學習總結

來源:互聯網
上載者:User

標籤:2.4   split   介面   字串   應用   arch   try   泛型類   沒有   

1.本周學習總結1.1 以你喜歡的方式(思維導圖或其他)歸納總結集合與泛型相關內容
  • 泛型部分思維導圖

  • 集合部分學習總結

  • java.util.Collection 是一個集合介面;java.util.Collections 是一個封裝類,是實現Collection的工具類

2.書面作業2.1List中指定元素的刪除(題集題目)2.1.1實驗總結。並回答:列舉至少2種在List中刪除元素的方法
  • 實驗總結:輸出List函數部分--通過split()實現分割;foreach實現遍曆輸出;刪除List指定元素函數部分 --通過逐一遍曆,將每一個元素與指定元素進行equals();

  • 在List中刪除元素的方法:

  • 1.for迴圈遍曆list刪除指定元素

  • 2.增強for迴圈

  • 3.iterator遍曆

  • 刪除一個特定元素時,三種方法均可使用;刪除多個元素時,應使用迭代器iterator

2.2統計文字中的單詞數量並按出現次數排序(題集題目)2.2.1虛擬碼(不得複製代碼,否則扣分)
建立HashMap<String,Integer>讀入單詞遇到"!!!!!"跳出讀入迴圈foreach遍曆(遇到h中沒有的key,value=1;遇到h中有的key,在原有的value基礎上+1)Collections.sort實現value降序比較(value相同時,key升序排序)輸出h.size()foreach輸出前十的getkey()和getvalue()
2.2.2實驗總結
  • 本題使用Map集合中的HashMap,首先是實現單詞的讀入;遇到單/多個空格時,使用RegexString[] s = x.split(" \\s+");讀入過程方法與7-2略有不同,遇到Map中已有的索引值,在原有的value基礎上加1;反之,令其相應的value值為1,實現相應的迴圈遍曆;通過Map.Entry方法,重寫Collections.sort(),實現次數降序輸出,遇到次數相同的情況,按索引值升序輸出;最後輸出HashMap.size()和排序在前十的相應索引值和次數
    HashMap--當需要索引值對錶示,又不關心順序可採用
    TreeMap--當需要索引值對,並關心元素的自然排序時可採用
2.3倒排索引(題集題目)2.3.1你的代碼運行結果

2.3.2虛擬碼(不得複製代碼,否則扣分)
建立`Map<String, ArrayList<Integer>> h = new TreeMap<String, ArrayList<Integer>>();`建立`ArrayList`;實現迴圈輸入單詞:如果遇到"!!!!!"跳出迴圈;反之,如果在h中沒有找到相應的key,將其添加到h中並將所在的行數值添加到value(ArrayList)中,反之,判斷當前行數是否存在於已有的value(ArrayList);建立迭代器Iterator遍曆輸出;(完成第一部分)輸入字串數組(Regex空格隔開)如果h中沒有同時存在的要求單詞,`System.out.println("found 0 results");`,反之,求要求單詞所在行數的交集;如果不存在交集,`System.out.println("found 0 results");`,反之,輸出交集及對應行數(完成第二部分)
2.3.3實驗總結
  • 在Map建立過程中就遇到瓶頸,如何確定value的資料類型,通過同學啟發使用ArrayList<Integer>來實現;前期讀入單詞和集合類題目相似,第一部分使用迭代器Iterator實現遍曆輸出更直接;最困難的部分是實現交集部分所在行數及內容的輸出,通過for迴圈嵌套判斷語句按照虛擬碼的思路一步一步的實現,本題可以說是最為複雜的一道泛型與集合類的PTA題目
2.4Stream與Lambda

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

2.4.1使用傳統方法編寫一個搜尋方法List<Student> search(Long id, String name, int age, Gender gender, boolean joinsACM),然後調用該方法將id>某個值,name為某個值, age>某個值, gender為某個值,參加過ACM比賽的學生篩選出來,放入新的集合。在main中調用,然後輸出結果。(:出現學號、姓名)

2.4.2使用java8中的stream(), filter(), collect()編寫功能同4.1的代碼,並測試(要出現測試資料)。構建測試集合的時候,除了正常的Student對象,再往集合中添加一些null,你編寫的方法應該能處理這些null而不是拋出異常。(:出現學號)
List<Student> newStudent = student.stream().filter(e -> e!=null&&e.getId()>2016L&&e.getName().equalsIgnoreCase("Lin")&&e.getAge()>18&&e.getGender()==Gender.Male&&e.isJoinsACM()==true).collect(Collectors.toList());

  • 結果與上述一致
2.5泛型類:GeneralStack2.5.1GeneralStack介面的代碼

2.5.2結合本題與以前作業中的ArrayListIntegerStack相比,說明泛型有什麼好處
  • 使用interface GeneralStack<T>泛型定義介面,可以按照型別參數表列實現題目要求的Integer Double Car,極大程度上減少代碼冗餘,使得代碼更具靈活性,亦便於修改;與此同時,可以消除代碼中出現不必要的強制類型轉換現象(避免ClassCastException)
3.碼雲及PTA3.1碼雲代碼提交記錄

3.2PTA題集完成情況圖

3.3統計本周完成的代碼量
周次 總代碼量 新增代碼量 總檔案數 新增檔案數
第一周 189 189 10 10
第二周 304 304 9 9
第三周 557 557 10 10
第四周 621 621 8 8
第五周 326 326 7 7
第六周 972 972 12 12
第七周 338 338 4 4
第八周 379 379 6 6
第九周 492 492 5 5
4.評估自己對Java的理解程度
維度 程度
文法 掌握目前基本的Java文法,PTA的題目基本能完成,但綜合類的PTA題目還有一定的難度
物件導向設計能力 GUI介面設計還有待提高
應用能力 掌握的知識還不夠深入,可以藉助書籍逐步實現小工具的建立設計
至今為止程式碼數 將近4000行

201621123040《Java程式設計》第九周學習總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.