標籤(空格分隔):Javahtml
關於泛型的基礎知識和有用的代碼片斷解釋能夠參考:瞭解泛型
泛型應用--泛型接口、泛型方法、泛型數組、泛型嵌套的代碼解釋能夠參考:Java泛型java
題集jmu-Java-05-集合
之4-1算法
Answer:
貼上函數代碼塊和解釋:編程
//註釋參考來自JDK6.0文檔(老師提供的中文版) /* covnertStringToList函數代碼 */ private static List<String> convertStringToList(String line) { Scanner input = new Scanner(line); //實例化list List<String> list = new ArrayList<String>(); while (input.hasNext()) { //向列表的尾部添加指定的元素 list.add(input.next()); } return list; } /* remove函數代碼 */ public static void remove(List<String> list, String str) { Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { // next()返回迭代的下一個元素 String word = iterator.next(); if (word.equals(str)) { //iterator.remove()從迭代器指向的 collection 中移除迭代器返回的最後一個元素 iterator.remove(); } } }
Answer:
數組
題集jmu-Java-05-集合
之5-3 統計文字中的單詞數量並按出現次數排序函數
Answer:學習
//關鍵代碼1 //實例化儲存單詞的map,並實現存放 Map<String, Integer> map = new TreeMap<String, Integer>(); while (input.hasNext()) { String word = input.next(); if (word.equals("!!!!!")) break; //containsKey(Object key)若是此映射包含指定鍵的映射關係,則返回 true。 else if (!map.containsKey(word)) //put(K key,V value) map.put(word, 1); else { //get(K key,V value) int n = (int) map.get(word); map.put(word, n + 1); } } System.out.println(map.size()); //關鍵代碼2 List<Map.Entry<String, Integer>> arrayList = new ArrayList<Map.Entry<String, Integer>>(map.entrySet()); //用Collections.sort()方法對arrayList存放Map的鍵值進行排序 Collections.sort(/* ....... .......*/ ); //關鍵代碼3 for (Map.Entry<String, Integer> entry : arrayList) { /* 按要求輸出 ...... ...... */ }
Answer:
在上面的代碼中已經在關鍵處作了解釋,學會善於運用map已經有的方法。
運行結果:
在查找JDK文檔時以爲下面有意義的說明:測試
瞭解接口
Map<K,V>
:
K - 此映射所維護的鍵的類型
V - 映射值的類型
一個映射不能包含重複的鍵;每一個鍵最多隻能映射到一個值。
Map 接口提供三種collection 視圖,容許以鍵集、值集或鍵-值映射關係集的形式查看某個映射的內容。映射順序 定義爲迭代器在映射的 collection 視圖上返回其元素的順序。某些映射實現可明確保證其順序,如 TreeMap類;另外一些映射實現則不保證順序,如 HashMap 類。
基於紅黑樹(Red-Black tree)的 NavigableMap 實現。該映射根據其鍵的天然順序進行排序,或者根據建立映射時提供的 Comparator 進行排序,具體取決於使用的構造方法。
此實現爲 containsKey、get、put 和 remove 操做提供受保證的 log(n) 時間開銷。這些算法是 Cormen、Leiserson 和 Rivest 的 Introduction to Algorithms 中的算法的改編。
引用來自:JDK6.0中文版.net
題集jmu-Java-05-集合
之5-4設計
Answer:
//若干行英文,以!!!!!爲結束,而且統計每一個單詞所在行數 while (input.hasNextLine()) { String str = input.nextLine(); if (str.compareTo("!!!!!") == 0) break; word.add(str); String word1[] = str.split(" "); for (int i = 0; i < word1.length; i++) { Set<Integer> num = new TreeSet<Integer>(); if (line.containsKey(word1[i])) { num = line.get(word1[i]); } num.add(count); line.put(word1[i], num); } count++; m++; } //輸入一行查詢關鍵字,輸出行集與行集內每一行的內容 while (input.hasNext()) { /* ...... ......*/ if (arr.size() == 0) System.out.println("found 0 results"); else { System.out.println(arr.toString()); int j; for (int i = 0; i < arr.size(); i++) { j = arr.get(i) - 1; System.out.println("line " + arr.get(i) + ":"+word.get(j)); }
Answer:
鞏固了對TreeMap運用的熟練程度,學會了用split截取字符串來取得其中的關鍵字。
Answer:
編寫一個Student類,屬性爲:
private Long id; private String name; private int age; private Gender gender;//枚舉類型 private boolean joinsACM; //是否參加過ACM比賽
建立一集合對象,如List,內有若干Student對象用於後面的測試。
Answer:
Answer:
//關鍵代碼: List<Student> answer = list .stream().filter(line -> line.getId() > 10 && line.getName().equals("zhang") && line.getGender().equals(Gender.girl) && line.isJoinsACM()) .collect(Collectors.toList());
Answer:
//改進函數的關鍵代碼: List<Student> answer = list .stream().filter(line -> line != null).filter(line -> line.getId() > 10 && line.getName().equals("zhang") && line.getGender().equals(Gender.girl) && line.isJoinsACM()) .collect(Collectors.toList());
結果截圖:
題集jmu-Java-05-集合
之5-5 GeneralStack
Answer:
interface GeneralStack { public Object push(Object item); public Object pop(); public Object peek(); public boolean empty(); public int size(); }
Answer:
在學泛型以前,我只知道類和方法只能使用具體的類型。當須要多種類型的方法和類時,必須重寫。以實驗5來講,之前IntegerStack接口只能用於存放Integer類型的數據,但運用泛型的知識,寫了通用的GeneralStack接口,對任何引用類型的數據都適用。
Answer:
基礎參考文件GenericMain,在此文件上進行修改。
Stringmax=max(strList)
能夠運行成功,其中strList爲List<String>
類型。也能使得Integer maxInt =max(intList)
;運行成功,其中intList爲List<Integer>
類型。Answer:
max方法以下:
public static <T extends Comparable<T>> T max(List<T> list) { T max = list.get(0); for (T word : list) { if (word.compareTo(max) > 0) { max = word; } } return max; }
運行結果以下:
max1(stuList)
;能夠運行成功,其中stuList爲List<StuUser>
類型。Answer:
方法max1和max方法的思想是相同的,只需稍做改變以下:
//實現Comparable接口 public static <StuUserComparator extends Comparable<StuUser>> StuUser max1(List<StuUser> stuList) { StuUser maxstu = stuList.get(0); for (StuUser student : stuList) { if ( student.compareTo( maxstu ) > 0 ){ maxstu = student; } } return maxstu; }
實現結果:
集合實驗文件中的第07次實驗(集合).doc文件,裏面的題目6.
Answer:
題目要求的說明以下:
實驗說明:
輸入格式:
第一行是詞表,每一個詞之間以空格分隔。
接下來是若干行中文句子。
輸出格式:
逆向最大匹配的分詞結果,每一個詞之間使用空格分隔。每一個輸入對應一行輸出。
輸入樣例:
詞表:你 我 他 愛 北京 天安門 研究 研究生 命 生命 的 起源
句子1:研究生命的起源
句子2:我愛北京天安門
句子3:好朋友
輸出樣例:
句子1分詞結果:研究 生命 的 起源
句子2分詞結果:我 愛 北京 天安門
句子3分詞結果:好 朋 友
個人想法:
將詞表的單詞存入哈希表;
而後輸入句子,將句子的詞與哈希表中的單詞比較;
若是相同,存入一個新的list;
最後輸出結合中的元素。
完成其中的做業一、做業2。內有代碼,可在其上進行適當的改造。建議按照裏面的教程,從頭至尾本身搭建。
Answer:
只是熟悉一下JavaFX,完成做業,將界面中文化:
題目集:jmu-Java-05-集合
在碼雲的項目中,依次選擇「統計-Commits歷史-設置時間段」, 而後搜索並截圖
函數(4-1),編程(5-3,5-4,5-5) 實驗總結已經在做業中體現,不用寫。