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
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:
- 类型安全
- 消除强制类型转换
- 潜在的性能收益
相比较之前的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 |