學號:201621123032 《Java程序設計》第9周學習總結(
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周學習總結(