1.1 實驗總結
Scanner sc = new Scanner(line);對這個代碼還不是很理解;在刪除元素的時候,第一次我直接使用了remove的方法,結果發現答案不同,這種方式的問題在於,刪除某個元素後,list的大小發生了變化,而你的索引也在變化,因此會致使你在遍歷的時候漏掉某些元素。好比當你刪除第1個元素後,繼續根據索引訪問第2個元素時,由於刪除的關係後面的元素都往前移動了一位,因此實際訪問的是第3個元素。所以,這種方式能夠用在刪除特定的一個元素時使用,但不適合循環刪除多個元素時使用,因此後面改用了iterator遍歷,結合.next()和.remove()方法;也能夠經過foreach方法、從表尾開始向表頭判斷刪除。java
2.1 僞代碼(簡單寫出大致步驟)函數
for(String e :Line){ int flag=0; for(String w :count.wordset){ if(e.equals(w)){ flag=1; Integer n =count.wordmap.get(e)+1; count.wordmap.put(e,n); break; } } if(flag==0){ count.wordset.add(e); count.wordmap.put(e, 1); } }
2.2 實驗總結
對Map有所理解了,不過還不知道如何對Map進行排序,因此此次沒作完整。學習
3.1 截圖你的提交結果(出現學號)
測試
3.2 僞代碼(簡單寫出大致步驟)code
TreeMap<String,TreeSet<Integer>> treemap = new TreeMap<String,TreeSet<Integer>>(); Scanner input = new Scanner(str); while(input.hasNext()){ String string=input.next(); if(treemap.containsKey(string)){ treemap.get(string).add(count); } else{ TreeSet<Integer> treeset = new TreeSet<Integer>(); treeset.add(count); treemap.put(string, treeset); } } input.close(); count++;
3.3 實驗總結
用TreeMap的排序功能使用起來比較方便;用一個map映射,存放這一整行的信息和行數,讀取每一行的每一個單詞,key爲String value爲行。對象
private Long id; private String name; private int age; private Gender gender;//枚舉類型 private boolean joinsACM; //是否參加過ACM比賽
建立一集合對象,如List,內有若干Student對象用於後面的測試。
4.1 使用傳統方法編寫一個方法,將id>10,name爲zhang, age>20, gender爲女,參加過ACM比賽的學生篩選出來,放入新的集合。在main中調用,而後輸出結果。
4.2 使用java8中的stream(), filter(), collect()編寫功能同4.1的函數,並測試。
4.3 構建測試集合的時候,除了正常的Student對象,再往集合中添加一些null,而後從新改寫4.2,使其不出現異常。blog
5.1 截圖你的提交結果(出現學號)排序
5.2 GeneralStack接口的代碼索引
interface GeneralStack<T> { public T push(T item); public T pop(); public T peek(); public boolean empty(); public int size(); }
5.3 結合本題,說明泛型有什麼好處接口
基礎參考文件GenericMain,在此文件上進行修改。
6.1 編寫方法max,該方法能夠返回List中全部元素的最大值。List中的元素必須實現Comparable接口。編寫的max方法需使得String max = max(strList)能夠運行成功,其中strList爲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