本題做業題集集合
java
public static List<String> convertStringToList(String line) { List<String> strList = new ArrayList<String>(); Scanner sc = new Scanner(line); while(sc.hasNext()) { strList.add(sc.next()); } sc.close(); return strList; }//實現以空格爲分割符,將line轉換爲List<String>. public static void remove(List<String> list, String str) { for(int i=list.size()-1;i>=0;i--) {//刪除元素的時候從最後一個元素開始,避免刪除元素後位置發生變化而致使有些元素沒有刪除。 if(list.get(i).equals(str)) {//用equals的方法比較是否爲相同元素 list.remove(i);//引用iterator的remove的方法在list中移除掉以與str內容相同的元素 } } }
Map<String,Integer> map = new HashMap<String,Integer>();
//建立鍵對象和值對象的映射if(map.containsKey(str))
//containsKey判斷是否包含指定的鍵名,如果出現過的單詞則次數加1,不然及次數爲1。for (Map.Entry<String, Integer> e : sortmap1.entrySet())
//entrySet():迭代後能夠經過e.getKey(),e.getVaclue()得到key和valueCollections.sort(entryList, new MapComparatorByValue())
//Collections中的sort涉及到許多泛型,必需要實現Comparable接口,用compare To的方法來比較大小;對entryList的元素進行排序。2.2 實驗總結
單詞的次數統計和出現的單詞數量,用Map類來實現,而Map是鍵對象和值對象的映射集合,鍵對象不能重複,值對象能夠重複;我以爲比較重要的地方就是map.containsKey(str)
判斷Map中是否存在這個鍵,有的話次數加1,沒有就添加這個鍵到Map中。函數
3.1 截圖你的提交結果(出現學號)
學習
String[] lineword=str.split(" ");
split方法存放文本的單詞if(word.containsKey(lineword[i]))
同第2題,用containsKey的方法,判斷在Map中是否存在已有的單詞和句子的行數,若不存在,則存放新單詞和其句子的行數for (Map.Entry<String, Integer> e : sortmap1.entrySet())//
entrySet():迭代後能夠經過e.getKey(),e.getVaclue()得到key和value3.3 實驗總結
仍是涉及到Map的使用,經過使用TreeMap進行排序;而用匿名內部類來實現Comparato接口進行排序,而後就是查找句子,用出現查找的單詞來肯定行數,根據該行數出現的次數來肯定輸出,行數的次數=單詞數,輸出,不然輸出found 0 results
測試
private Long id; private String name; private int age; private Gender gender;//枚舉類型 private boolean joinsACM; //是否參加過ACM比賽
建立一集合對象,如List,內有若干Student對象用於後面的測試。this
樣例:3d
Student a=new Student(11L,"zhang",21,Gender.female,true); Student b=new Student(9L,"zheng",21,Gender.female,true); Student c=new Student(20L,"ling",15,Gender.male,false); Student d=new Student(20L,"zhang",25,Gender.female,true);
實現的方法:code
public Student find(){ if(this.id>10L&&this.name.equals("zhang")&&this.age>20&&this.gender==Gender.female&&this.joinsACM){ Student e=new Student(this.id,this.name,this.age,this.gender,this.joinsACM); return e; } else return null; }
運行結果:
對象
代碼:blog
ArrayList<Student> List2=(ArrayList<Student>) List.parallelStream().filter(student->(student.getId()> 10L && student.getName().equals("zhang") && student.getAge() > 20 && student.getGender().equals(Gender.female) && student.isJoinsACM())).collect(Collectors.toList()); }
運行結果:
排序
代碼:
ArrayList<Student> List2=(ArrayList<Student>) List.parallelStream().filter(student->(student.getId()> 10L && student.getName().equals("zhang") && student!=null && student.getAge() > 20 && student.getGender().equals(Gender.female) && student.isJoinsACM())).collect(Collectors.toList()); }
運行結果:
interface GeneralStack<T> { T push(T item); T pop(); T peek(); public boolean empty(); public int size(); }
5.3 結合本題,說明泛型有什麼好處
題目5-5中的stack須要實現Interger、Double和Car三種類型,若是不用泛型,那咱們就只能每一種都去實現,c差異與數據類型不一樣但方法徹底相同的GeneralStack接口。所以使用了泛型能夠提升代碼複用率。
基礎參考文件GenericMain,在此文件上進行修改。
String max = max(strList)
能夠運行成功,其中strList爲List<String>
類型。也能使得Integer maxInt = max(intList);
運行成功,其中intList爲List<Integer>
類型。public static <T extends Comparable<T>> T max(List<T> list) { T max = list.get(0); for (T t : list) { if ( t.compareTo( max ) > 0 ){ max = t; } } return max; // 返回最大對象 }
樣例:
strList.add("good"); strList.add("value"); strList.add("hello");
方法:String max = max(strList);
運行結果:
max1(stuList);
能夠運行成功,其中stuList爲List<StuUser>
類型。public static <StuUserComparator extends Comparable<StuUser>> StuUser max1(List<StuUser> stuList) { StuUser max = stuList.get(0); for (StuUser t : stuList) { if ( t.compareTo( max ) > 0 ){ max = t; } } return max; }
樣例:
StuUser a=new StuUser(44,"25"); stuList.add(e1); StuUser b=new StuUser(24,"23"); stuList.add(e2); StuUser c=new StuUser(8,"6"); stuList.add(e3);
運行結果: