201521123093 java 第八周总结

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历史-设置时间段”, 然后搜索并截图

posted on 2017-04-15 20:47  赵铭  阅读(179)  评论(0编辑  收藏  举报

导航