1. 本周学习总结
1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。
1.2 选做:收集你认为有用的代码片段
-
1、泛型简介:同一个代码可以被不同的对象重用
-
2、使用泛型的好处:允许指定集合中元素的类型,这样就可以避免使用有风险的
强制类型转换,并且如果在使用过程中有出错的话在编译的
时候就能发现,不需要等到运行的时候才能知道错误。 -
3、使用泛型的约束与局限性:不能使用基本类型
2. 书面作业
1、List中指定元素的删除
题集jmu-Java-05-集合
之4-1
1.1 实验总结
答:这题嘛,在实验课上写的,基本上就是根据老师讲的写的,可能自己比较笨吧还是用了挺长时间才写出来的,
删除那一块一开始就没弄懂,后面才知道是自己写重了然后就一直不能使用,不过最后还是写出来了。
1.2 截图你的提交结果(出现学号)
2、统计文字中的单词数量并按出现次数排序(尽量不要出现代码)
题集jmu-Java-05-集合
之5-3 统计文字中的单词数量并按出现次数排序
2.1 伪代码(简单写出大体步骤)
while(sc.hasNext()){
String key = sc.next();
if(判断输入是否结束){
break;
}
add(添加)
if(判断是否有一样的单词){
有value加一
没有value为一
}
if(比较最后value的大小,若相等){
按照key字母排序输出
}
else{
按照value大小输出
}
for(<10){
输出前10个单词和他的value
}
}
2.2 实验总结
答:一开始在实验课上并没有写出来,后面根据老师给的代码再结合5-2的实验,但这题是用map来写的,
其实老师给的代码挺全的了,只要把后面排序的问题和前面输入添加一下就可以用了。
2.3 截图你的提交结果(出现学号)
3、倒排索引(尽量不要出现代码)
题集jmu-Java-05-集合
之5-4
3.1 伪代码(简单写出大体步骤)
输入的时候和前面两题一样
//判断
while(sc.hasNext()){
for(int i=0;i<lineword.length;i++){ //对行进行检索
if(word contains key){
value++
输出所在行数与所在行数的所有信息
}
输出found 0 results
}
}
3.2 实验总结
答:刚开始看到题目的时候感觉和前面的两题差不多,但是!那只是感觉,并不知如何下手
知道要用Map,可是就是不知道怎么写啊,怎么输出整个单词。过程很艰辛,结局很满意。
3.3 截图你的提交结果(出现学号)
4、Stream与Lambda
编写一个Student类,属性为:
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中调用,然后输出结果。
private static List<Student> Search(List<Student> list) {
List<Student> list1 = new ArrayList<Student>();
for(Student student:list){
if(student.getId()>10&&student.getName().equals("zhang")&&student.getAge()>20
&&student.getGender().equals(Gender.female)&&student.isjionsACM()){
list1.add(student);
}
}
return list1;
}
4.2 使用java8中的stream(), filter(), collect()编写功能同4.1的函数,并测试。
newlist=(ArrayList<Student>) list.stream().filter(l->l.getId()>10&&l.getName().equals("zhang")&&l.getAge()>20&&l.getGender().equals(Gender.女)&&l.isJoinsACM()==true).collect(Collectors.toList());
for (Student student : newlist) {
System.out.println(student);
}
4.3 构建测试集合的时候,除了正常的Student对象,再往集合中添加一些null,然后重新改写4.2,使其不出现异常。
答:在原来判断该的基础上加一个student!=null即可。
5、泛型类:GeneralStack
题集jmu-Java-05-集合
之5-5 GeneralStack
5.1 GeneralStack接口的代码
interface GeneralStack<T> {
public T push(T item);
public T pop();
public T peek();
public boolean empty();
public int size();
}
5.2 结合本题,说明泛型有什么好处
答:好处啊,就是不用在定义一个函数是在什么类型下使用的,这样就各个类型的都可以重复使用
同一个方法了。
5.3 截图你的提交结果(出现学号)
这题我在eclipse上运行的答案是对的,但是在pta上一直不能通过,问了好多同学还是找不出来,真不知道哪里错了,我能怎么办我也很绝望啊。
6、泛型方法
6.1 编写方法max,该方法可以返回List中所有元素的最大值。List中的元素必须实现Comparable接口。编写的max方法需使得String max = max(strList)
可以运行成功,其中strList为List<String>
类型。也能使得Integer maxInt = max(intList)
;运行成功,其中intList为List<Integer>
类型。
3. 码云上代码提交记录及PTA实验总结
题目集:jmu-Java-05-集合
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图