html5网站正在建设中模板下载,双语网站代码,免费下载ppt模板网站有哪些,网络建设费用201521123014 《Java程序设计》第8周学习总结 1. 本周学习总结 1.1 以你喜欢的方式#xff08;思维导图或其他#xff09;归纳总结集合与泛型相关内容。 泛型#xff08;编写的代码可被不同类型的对象所重用#xff09; Java中一个集合可以放任何类型的对象#xff0c;因为… 201521123014 《Java程序设计》第8周学习总结 1. 本周学习总结 1.1 以你喜欢的方式思维导图或其他归纳总结集合与泛型相关内容。 泛型编写的代码可被不同类型的对象所重用 Java中一个集合可以放任何类型的对象因为任何对象都 is-a Object但从集合里面获取对象的时候我们必须进行强制类型转换。在没有泛型的情况下通过对类型Object的引用来实现参数的转换这种转换是需要显式地强制类型转换对于强制类型转换错误的情况编译器可能不提示错误而在运行时候却又通不过这是一个安全隐患。例如List list new ArrayList();
list.add(CSDN_SEU_Cavin);
list.add(100);
for (int i 0; i list.size(); i) { String name (String) list.get(i); //取出Integer时运行时出现异常
System.out.println(name: name);
} 向list类型集合中加入了一个字符串类型的值和一个Integer类型的值。这样合法因为此时list默认的类型为Object类型。在之后的循环中由于忘记了之前在list中也加入了Integer类型的值或其他原因运行时会出现java.lang.ClassCastException异常。为了解决这个问题泛型应运而生。引入泛型的好处从此无需使用有风险的强制类型转换错误在编译阶段就能发现而不用等到运行时才发现出错语法在java7中可以使用菱形语法ListString strList new ArrayList();简单泛型类的定义 public class PairT定义一个泛型方法public static T T xxxx(T[] arr){} 改进public static T extends Comparable PairT xxxx(T[] a){}T extends Comparable 表示T是绑定类型(Comparable)的子类型Pair? 使用?就意味着不知道是什么类型使用泛型的约束与局限性不能使用基本类型不能使用Pairdouble, 只能PairDouble运行时类型查询只适用于原始类型 2. 书面作业 Q1 List中指定元素的删除(题目4-1) 1.1 实验总结 public static void remove(ListString list, String str) {for (int i 0; i list.size(); i) {if (list.get(i).equals(str)) {list.remove(i);i--;}}} 实验总结要删除List中指定的元素首先应该找到这个元素下标为元素的下标删除之后元素后面的元素前移下标就指向了被删除元素的下一个元素如果执行i--的话就会出错。 Q2 统计文字中的单词数量并按出现次数排序(题目5-3) 2.1 伪代码简单写出大体步骤 伪代码1建立一个TreeMapkey类型Stringvalue类型Integer。2将文字存入key中判断key是否为!!!!!如果不是判断TreeMap中是否已经有key如果没有就进入TreeMap中 value设为1如果有就进入TreeMap中value13转化成list用匿名内部类实现Comparator接口,实现对value的排序。如果value相同TreeMap中已自动实现对key的排序4统计TreeMap中的单词数并输出Map中的10个元素。 2.2 实验总结 实验总结对于Map的使用必须要用有key和value。HashMap不能对Key进行排序而TreeMap可以。注意将Map转化为List的语法ListMap.EntryString,Integer entrylistnew ArrayListMap.EntryString,Integer(str.entrySet());
其实是要注意匿名内部类实现Comparator接口的语法。 Q3 倒排索引(题目5-4) 3.1 截图你的提交结果(出现学号) 3.2 伪代码简单写出大体步骤 建立一个TreeMapkey为Stringvalue为ArrayListInteger一个存放行的list。
将存入list中的单词加入TreeMap中按照行数加入value中。如果单词在Map中出现过则令value.add
输出TreeMap
读取一行
存入一个String searchlist 类型变量中。
创建一个查找的ArrayListInteger类型Num。读取每个单词。
如果TreeMap中没有searchlist里的单词或者Num的值与getkey进行比较不同的话 则输出found 0 results 3.3实验总结 实验总结主要是把行和单词要分开。要有一个储存行的变量才能方便查找。 Q4 Stream与Lambda编写一个Student类属性为: private Long id;
private String name;
private int age;
private Gender gender;//枚举类型
private boolean joinsACM; //是否参加过ACM比赛 创建一集合对象如List,内有若干Student对象用于后面的测试。 4.1 使用传统方法编写一个方法将id10name为zhang, age20, gender为女参加过ACM比赛的学生筛选出来放入新的集合。在main中调用然后输出结果。 for(i0;ilist.size();i){if((list.get(i).getId()10)(list.get(i).getName().equals(zhang))(list.get(i).getAge()20)(list.get(i).getGender().equals(getGender(2)))(list.get(i).isJoinsACM()true)){list2.add(list.get(i));//id10name为zhang, age20, gender为女参加过ACM比赛的学生加入list2}
} 输出结果 4.2 使用java8中的stream(), filter(), collect()编写功能同4.1的函数并测试。 list2list.stream().filter(a-10a.getId()).collect(Collectors.toList());//id10
list2list2.stream().filter(a-zhang.equals(a.getName())).collect(Collectors.toList());//name为zhang
list2list2.stream().filter(a-20a.getAge()).collect(Collectors.toList());//age20
list2list2.stream().filter(a-getGender(2).equals(a.getGender())).collect(Collectors.toList());//gender为女
list2list2.stream().filter(a-a.isJoinsACM()true).collect(Collectors.toList());//参加过ACM比赛 测试结果如图4.1. 4.3构建测试集合的时候除了正常的Student对象再往集合中添加一些null然后重新改写4.2使其不出现异常。 list.add(null);//增加null
list.add(new Student(10L,zheng,15,getGender(2),true));
list.add(new Student(20L,ling,25,getGender(1),false));
list.add(new Student(1L,wang,20,getGender(1),true));
list.add(new Student(25L,zhang,25,getGender(2),true));
list.add(new Student(20L,zhang,20,getGender(1),false)); listlist.stream().filter(a-a!null).collect(Collectors.toList());//排除null 运行结果 Q5 泛型类GeneralStack(题目5-5) 5.1 截图你的提交结果(出现学号) 5.2 GeneralStack接口的代码 interface GeneralStackE {public E push(E item);public E pop();public E peek();public boolean empty();public int size();
} 5.3 结合本题说明泛型有什么好处 可以定义不同的类型的类。从此无需使用有风险的强制类型转换错误在编译阶段就能发现而不用等到运行时才发现出错。Q6 泛型方法 基础参考文件GenericMain在此文件上进行修改。 6.1 编写方法max该方法可以返回List中所有元素的最大值。List中的元素必须实现Comparable接口。编写的max方法需使得String max max(strList)可以运行成功其中strList为List类型。也能使得Integer maxInt max(intList);运行成功其中intList为List类型。 class Max {public static T extends Comparable T max(ListT strList){T maxest strList.get(0);for(int i 1;i strList.size(); i){if ((maxest.compareTo(strList.get(i)) 0))maxest strList.get(i);}return maxest;}
}//该方法可以返回List中所有元素的最大值 3. 码云上代码提交记录及PTA实验总结 3.1 码云代码提交记录 3.2 PTA实验 实验总结已经在作业中体现不用写。 posted on 2017-04-15 19:28 Paparazzi 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/huangsh/p/6714451.html