1. 程式人生 > >學號:201621123032 《Java程序設計》第9周學習總結(

學號:201621123032 《Java程序設計》第9周學習總結(

刪除元素 異常 src tab 編寫 log stack 程序設計 boolean

1:本周學習總結

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

技術分享圖片

2:書面作業

2.1: List中指定元素的刪除(題集題目)

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

本題先建ListList<String> str =new ArrayList(),把元素依次放入List中。使用叠代器Iterator<String> it = list.iterator()依次一次進行比較,刪除。

刪除元素的方法:
1:使用傳統for循環遍歷,找到匹配的將其刪除。 但是這樣刪除一個元素,後面的元素會自動前移,導致下次遍歷的時候少遍歷一個元素。如果兩個元素相鄰,則後面的那個元素不會被刪除。 解決辦法:進入判斷後,i減1。
2:方法list.iterator()的方法就不會有這個問題。
3:可以新建一個List 沒刪除的放入新的List。

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

2.2.1:偽代碼

new一個HashMap,名為dict;
while進行循環判斷{
   if  輸入的單詞eequal "!!!!!";
        break;
   else
       if    dict沒有相應的key
          dict加入新元素,value的值=1;
      else
              
          dict的value的值加1;
        }
new 一個ArrayList的對象list;
調用Collection.sort方法,重寫compare方法,進行排序。
for循環,輸出前10個。

2.2.2:實驗總結

1: 本題應先創建一個HashMap,一開始沒搞清楚題意,不知道該用什麽為鍵值。
2: 單詞加入HashMap的時候,要進行判斷,如果以存在對應的值加1,一開始不知道值如何加1。
3: 後面的排序比較難,因為Collections.sort只對List排序,所以應先把HashMap轉換為List;然後重寫compare方法。

2.3:倒排索引(題集題目):本題較難,做不出來不要緊。但一定要有自己的思考過程,要有提交結果。

2.3.1 截圖你的代碼運行結果

本題是在同學的幫助下,寫出來的,自己一開始不太理解什麽意思,也沒有什麽思路。
技術分享圖片

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

new一個Map對象map; key為單詞元素,value為單詞所在行數。
while進行循環判斷{
    i++;標記行數;
   if  輸入的單詞eequal "!!!!!";
        break;
  else
      把每行英語單詞放入數組 str;
   for(數組){

      if   map中沒有相應的key
         new ArrayList的對象line;
         line.add(行數i);
         map中put入新元素,
    else
       判斷當前行數是否存在,沒有就添加到value;
 創建叠代器;
 遍歷輸出map;
 輸入字符串,以空格隔開。
  if  不同時存在指定單詞
   輸出found 0 results;
  else
     求指定單詞的交集;
     if  交集為0;
      輸出found 0 results;
    else
       輸出交集和行數;
           }
}

2.3.3 實驗總結

本題是在同學的幫助下,寫出來的,自己一開始不太理解什麽意思,也沒有什麽思路。
本題要進行多次判斷,首先判斷map是否存在,不存在要添加進去;存在的話要判斷是否和之前value一樣,不一樣的value要添加;一開始沒有考慮一行中可能存在幾個相同的單詞而出錯。
map添加完畢要判斷交集也是個難點,一開始沒有思路,不知道如何實現。最後在別人的幫助下知道了用retainAll方法來求。

2.4:Stream與Lambda

編寫一個Student類,屬性為:

private Long id; private String name;
 private int age; private Gender gender;//枚舉類型 
private boolean joinsACM; //是否參加過ACM比賽` 
創建一集合對象,如List<Student>,內有若幹Student對象用於後面的測試。

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而不是拋出異常。(截圖:出現學號)

使用java8中的stream(), filter(), collect():
技術分享圖片

運行結果:
技術分享圖片

2.5: 泛型類:GeneralStack---題集jmu-Java-05-集合之GeneralStack

2.5.1:GeneralStack接口的代碼

技術分享圖片

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

本題采用泛型,只定義一個接口就可以根據自己的要求來設置入棧的類型,比如本題的Integer、Double和Car類型。以前的作業ArrayListIntegerStack,只能對Integer類型的元素進行操作,有局限。使用泛型較靈活,減少代碼冗余。

3:.碼雲及PTA

3.1:碼雲代碼提交記錄

技術分享圖片

3.2:截圖PTA題集完成情況圖

技術分享圖片
技術分享圖片

3.3:統計本周完成的代碼量

技術分享圖片

周次 總代碼量 新增加代碼量 總文件夾 新增加文件夾
1 114 114 11 11
2 520 406 16 6
3 1089 569 22 6
5 1425 336 29 7
6 1819 394 31 2
7 2987 1168 54 23
8 5437 2450 79 25
9 5695 258 84 5
10 6680 985 102 18

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

維度
語法 一些基本語法沒有問題,但是還是存在一些不熟練的語法,需要百度
面向對象設計 這方面比較薄弱,有基礎的思維邏輯,在做購物車大作業時經常會出錯,不知道從何下手
應用能力 應用能力比較差,可以完成一些較簡單的程序
至今代碼 6680 但是有一小部分不是自己打的代碼,是學習資料,統計的時候一並統計進去了

學號:201621123032 《Java程序設計》第9周學習總結(