PTA與參考資料
集合預習課件
題集:jmu-Java-06-集合
集合實驗文件
第1次實驗
1.1 ArrayListIntegerStack(課堂演示)
可演示:jdk中的javadoc文檔注釋/**
。
javadoc:javadoc技術可以從程序源代碼中抽取類、方法、成員等注釋形成一個和源代碼配套的API幫助文檔。
注1:不要導入java.awt.List,應導入java.util.List
注2:提交的時候務必要將中文注釋刪掉。
思考:是否一定要指定棧中的元素類型?
1.2 銀行業務隊列簡單模擬(課堂演示)
Queue<String> q = new Queue<>();
可以成功嗎?為什么?
LinkedList<Integer> queue = new LinkedList<>();
queue.addLast(1);
Queue<String> q = new LinkedList<>();
q.addLast(1); #為什么這句會錯誤?
請在JDK文檔中查詢Queue接口,然后看其有什么實現類?使用其中一個實現類完成。
可演示:ctrl+shift+o 快速導入所需包, ctrl+2
。
思考:可以直接使用LinkedList<String> queue = new LinkedQueue<>();
直接代替隊列使用嗎?
1.3 統計一段英文文字中的不同單詞的個數並按單詞的字母順序排序后輸出(課堂演示)
采用什么List、Set、Queue還是Map?
如何按字母順序排序?
逐個讀取單詞,見Scanner的hasNext()與next()方法
如何遍歷?forEach, iterator
快速測試技巧:
String str = "將PTA中的輸入樣例直接粘貼到Eclipse的雙引號之間,並刪掉多余的字符";
//Scanner sc = new Scanner(System.in); //然后把System.in改成str,如下所示
Scanner sc = new Scanner(str); //Scanner可直接對字符串處理
//其他代碼
接下來測試的時候,就直接運行。無需在控制台手動粘貼輸入樣例。
注意:在PTA提交的時候。需要將Scanner(str)改成Scanner(System.in)。
1.4 嘗試使用Java集合類中的LinkedList代替棧,來判斷一個字符串是否是回文
- 簡單講解:使用棧判斷回文的原理。
- 簡單講解:使用LinkedList中的哪兩個方法來代替入棧與出棧。
第2次實驗
2.1 6-1 List中指定元素的刪除
讀取單詞到List
Scanner lineScanner = new Scanner(line)
,然后使用lineScanner的next方法。可以忽略詞與詞之間空格、多個空格。
從頭到尾刪要注意什么?
2.2 7-3 統計文字中的單詞數量並按出現次數排序(課堂演示)
- Map的Key, Value分別應該是什么類型?
- 怎么判斷Map中的的keySet中是否存在某個單詞?如果單詞不存在,怎么放入Map?
- 怎么對value進行排序?
Collections
僅能對List進行排序,怎么將EntrySet轉化為List (List有一個構造函數,可以接收Set)?如何對List進行排序? - 在IDE中如何快速生成匿名內部類(如Comparator)?
alt+/
2.3 7-4 倒排索引(自行完成)
2.4 7-5 GeneralStack(自行完成)
簡單講解:泛型接口、泛型類的意義。
2.5 本章特別加分任務
實驗任務書中的“倒排索引”、“逆向最大匹配分詞算法”。
請為你的程序編寫若干方法,比如:對於“倒排索引”題目,
請至少編寫如下幾個方法:
- 建立索引 createIndex
- 打印索引 printIndex
- 檢索 queryIndex
對於“逆向最大匹配分詞算法”,請至少編寫:
- List
split(String line, Set words) //對lines使用詞表words進行分詞
編寫好以后,請直接給老師演示並講解清楚。
參考資料: