201521123059 《Java程序设计》第八周学习总结
1. 本周學習總結
1.1 以你喜歡的方式(思維導圖或其他)歸納總結集合與泛型相關內容。
1.2 選做:收集你認為有用的代碼片段
簡單泛型定義: public class Pair<T> {public Pair(T first, T second) {this.first = first; this.second = second; }public T getFirst() { return first; }public void setFirst(T newValue) { first = newValue; }private T first; private T second;.... }2. 書面作業(yè)
本次作業(yè)題集集合
Q1:List中指定元素的刪除(題目4-1)
1.1 實驗總結
截圖:
Q2:統(tǒng)計文字中的單詞數量并按出現次數排序(題目5-3)
2.1 偽代碼(簡單寫出大體步驟)
2.2 實驗總結
總結:這題先建立一個映射表,在while()循環(huán)里面調用equals方法確定是否輸入單詞結束,然后題目要求排序輸出單詞出現次數前十的單詞,這時候就得把ArrayList<Entry<String,Integer>>(m.entrySet())強制轉換為List<Entry<String,Integer>>類型,因為在Map映射里面沒有排序的方法,然后調用Collections.sort()和Comparator方法得出單詞出現次數前十的單詞。這題需要注意的是Map接口不能實現排序。Q3:倒排索引(題目5-4)
3.1 截圖你的提交結果(出現學號)
3.2 偽代碼(簡單寫出大體步驟)
//先建立兩個鍵值對 TreeMap<String, TreeSet<Integer>> map = new TreeMap<String, TreeSet<Integer>>(); TreeMap<Integer, String> map2 = new TreeMap<Integer, String>();//第一個大的while循環(huán)建立索引然后并輸出。 while (sc.hasNextLine()) {String s=sc.nextLine();if (s.equals("!!!!!")) {break;} else {Scanner in = new Scanner(s);map2.put(row, s);while (in.hasNext()) {if (map.get(s1) == null) {TreeSet<Integer> set = new TreeSet<Integer>();set.add(row);map.put(s1, set);} else {map.get(s1).add(row);}}}row++;}//這個while循環(huán)倒排索引查詢的問題,如果沒有找到直接輸出found 0 results。 while (sc.hasNextLine()) {String s2 = sc.nextLine();if (s2.length() == 0) {System.out.println("found 0 results");continue;}else{....}3.3 實驗總結
總結:這道題我構思了挺久也沒有寫完整,最后參考了寫出來的同學的代碼才完成了,覺得難度還是有點。用到了Map接口的一些add()和put()方法,要注意的是單詞找不到的情況,只要有一個單詞找不到,返回空集即可,還有建立兩個鍵值對為TreeMap<String, TreeSet<Integer>> map = new TreeMap<String, TreeSet<Integer>>();TreeMap<Integer, String> map2 = new TreeMap<Integer, String>(),然后按順序先解決輸入若干行英文還有索引,然后在解決倒排索引 查詢結果。Q4:Stream與Lambda
編寫一個Student類,屬性為:
創(chuàng)建一集合對象,如List,內有若干Student對象用于后面的測試。
4.1 使用傳統(tǒng)方法編寫一個方法,將id>10,name為zhang, age>20, gender為女,參加過ACM比賽的學生篩選出來,放入新的集合。在main中調用,然后輸出結果。
4.2 使用java8中的stream(), filter(), collect()編寫功能同4.1的函數,并測試。
4.3 構建測試集合的時候,除了正常的Student對象,再往集合中添加一些null,然后重新改寫4.2,使其不出現異常。
Q5:泛型類:GeneralStack(題目5-5)
5.1 截圖你的提交結果(出現學號)
5.2 GeneralStack接口的代碼
public interface GeneralStack {Object push(Object item); //如item為null,則不入棧直接返回null。Object pop(); //出棧,如為空,則返回null.Object peek(); //獲得棧頂元素,如為空,則返回null.public boolean empty();//如為空返回truepublic int size(); //返回棧中元素數量 }5.3 結合本題,說明泛型有什么好處
泛型的好處是:消除強制類型轉換,消除源代碼中的許多強制類型轉換,這使得代碼更加可讀,并且減少了出錯機會;類型安全。 泛型的主要目標是提高 Java 程序的類型安全。通過知道使用泛型定義的變量的類型限制,編譯器可以在一個高得多的程度上驗證類型假設。沒有泛型,這些假設就只存在于程序員的頭腦中Q6:泛型方法 基礎參考文件GenericMain,在此文件上進行修改。
6.1 編寫方法max,該方法可以返回List中所有元素的最大值。List中的元素必須實現Comparable接口。編寫的max方法需使得String max = max(strList)可以運行成功,其中strList為List類型。也能使得Integer maxInt = max(intList);運行成功,其中intList為List類型。
6.2 選做:現有User類,其子類為StuUser,且均實現了Comparable接口。編寫方法max1,基本功能同6.1,并使得max1(stuList);可以運行成功,其中stuList為List類型。
6.3 選做:編寫int myCompare(T o1, T o2, Comparator c)方法,該方法可以比較User對象及其子對象,傳入的比較器c既可以是Comparator,也可以是Comparator。注意:該方法聲明未寫全,請自行補全。
Q7:選做:逆向最大匹配分詞算法
集合實驗文件中的第07次實驗(集合).doc文件,里面的題目6.
7.1 寫出偽代碼
7.2 實驗總結
Q8:選做:JavaFX入門
完成其中的作業(yè)1、作業(yè)2。內有代碼,可在其上進行適當的改造。建議按照里面的教程,從頭到尾自己搭建。
3. 碼云上代碼提交記錄及PTA實驗總結
題目集:jmu-Java-05-集合
3.1. 碼云代碼提交記錄
在碼云的項目中,依次選擇“統(tǒng)計-Commits歷史-設置時間段”, 然后搜索并截圖3.2. PTA實驗
函數(4-1),編程(5-3,5-4,5-5)
驗總結已經在作業(yè)中體現,不用寫。
轉載于:https://www.cnblogs.com/wen1234/p/6710072.html
總結
以上是生活随笔為你收集整理的201521123059 《Java程序设计》第八周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 37-字符的全排列
- 下一篇: ThinkingInJava对this关