201621123078《Java程序设计》第9周学习总结

1. 本周学习总结

1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。

2. 书面作业

1. List中指定元素的删除(题集题目)

1.1 实验总结。并回答:列举至少2种在List中删除元素的方法。

Answer:
1、for循环遍历list

for(int i=0;i<list.size();i++){
    if(list.get(i).equals("del"))
        {list.remove(i);
        i--;}
}

ps:这种方法适合在删除特定的一个元素时使用,不适合循环删除多个元素。

2、增强for循环

for(String x:list){
    if(x.equals("del"))
        list.remove(x);
}

ps:这种循环在删除元素后会继续循环报错,因为元素在使用后会被修改,导致异常,如果删除后break,就不会报错。

2. 统计文字中的单词数量并按出现次数排序(题集题目)

2.1 伪代码(不得复制代码,否则扣分)

while(判断输入值不为空)
    if(输入的元素为"!!!!!")
      跳出循环break;
    while(判断输入值不为空)
    {if 把输入的单词存在map,再+1
      else 把该单词作为新的key并把值+1
    }
输出map,用Collections接口对map排序。
输出list前十个元素;
    

2.2 实验总结

Answer:把单词元素都存储到map中去,再判断map中是否含有这个单词,如果有,map中的value+1;否则将单词加入map,value置为1。

3. 倒排索引(题集题目)

3.1 截图你的代码运行结果

3.2 伪代码(不得复制代码,否则扣分)

while(判断输入值不为空)
    if(输入的元素为"!!!!!")
      跳出循环break;
存入元素到word;
遍历word;
     if没有对应的key在map
     添加单词到map中,并存储行数
    打印前十个值
    输入关键字
    遍历
if (某行包含关键字)
        在集合中加入行号
输出元素所在行数;

else 打印"found 0 results";
      
    

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 使用传统方法编写一个搜索方法List search(List stuList, Long id, String name, int age, Gender gender, boolean joinsACM),然后调用该方法将id>某个值,name为某个值, age>某个值, gender为某个值,参加过ACM比赛的学生筛选出来,放入新的集合。在main中调用,然后输出结果。(截图:出现学号、姓名)


4.2 使用java8中的stream(), filter(), collect()编写功能同4.1的代码,并测试(要出现测试数据)。构建测试集合的时候,除了正常的Student对象,再往集合中添加一些null,你编写的方法应该能处理这些null而不是抛出异常。(截图:出现学号)
ArrayList<Student> arrayList2 = (ArrayList<Student>) arrayList.parallelStream()
    .filter(student -> (student.getId() > 201621123077L && student.getName().equals("吕炜彬")
            && student.getAge() > 3 && 
            student.getGender().equals(Gender.male)
            && student.isJoinsACM()))
    .collect(Collectors.toList());

5. 泛型类:GeneralStack

5.1 GeneralStack接口的代码

interface GeneralStack<T>{
     E push(E item);
     E pop();
     E peek();
    public boolean empty();
    public int size();
}

5.2 结合本题与以前作业中的ArrayListIntegerStack相比,说明泛型有什么好处。

Answer:

  1. 类型安全
  2. 消除强制类型转换
  3. 潜在的性能收益
    相比较之前的ArrayListIntegerStack,运用了泛型,用了GeneralStack接口,相比较以前的IntegerStack接口只能用于存放Integer类型的数据,泛型更灵活,使用与更过类型的数据。

3.码云及PTA

3.1. 码云代码提交记录

3.2 截图PTA题集完成情况图


3.3 统计本周完成的代码量

周次 总代码量 新增代码量 总文件数 新增文件数
1 0 0 0 0
2 280 280 5 5
3 530 250 9 4
4 950 420 15 6
5 1345 395 20 5
6 1924 579 26 6
7 2248 324 31 5
8 2677 429 36 5
9 3020 343 42 6

目标估计能够实现,争取达到。

4. 评估自己对Java的理解程度

维度 程度
语法 pta上的题目还不是都能写出,语法还是有些困难,需要同学的帮助
面向对象设计能力 这一方面还是有些困难,不够熟练
应用能力 自己要编写小程序还是有些就困难
至今为止代码行数 大概3000
posted @ 2017-11-18 19:42  DansLv  阅读(176)  评论(0编辑  收藏  举报