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

1. 本周学习总结

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

1122714-20171117223813484-356830601.png

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 截图你的代码运行结果

1122714-20171118160512843-238993810.png

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中调用,然后输出结果。(截图:出现学号、姓名)

1122714-20171118193229577-940427016.png
1122714-20171118193028702-376355976.png

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());

1122714-20171118193028702-376355976.png

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. 码云代码提交记录

1122714-20171118191021843-331520396.png

3.2 截图PTA题集完成情况图

1122714-20171118161037140-1882110978.png
1122714-20171118161112062-1216096678.png

3.3 统计本周完成的代码量

周次总代码量新增代码量总文件数新增文件数
10000
228028055
353025094
4950420156
51345395205
61924579266
72248324315
82677429365
93020343426

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

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

维度程度
语法pta上的题目还不是都能写出,语法还是有些困难,需要同学的帮助
面向对象设计能力这一方面还是有些困难,不够熟练
应用能力自己要编写小程序还是有些就困难
至今为止代码行数大概3000

转载于:https://www.cnblogs.com/helloLV/p/7856628.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值