本题做业题集集合
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);
运行结果: