201621123040《Java程序设计》第九周学习总结
1.本周学习总结
1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容
- 泛型部分思维导图

集合部分学习总结
java.util.Collection是一个集合接口;java.util.Collections是一个包装类,是实现Collection的工具类
2.书面作业
2.1List中指定元素的删除(题集题目)
2.1.1实验总结。并回答:列举至少2种在List中删除元素的方法
实验总结:输出List函数部分--通过split()实现分割;foreach实现遍历输出;删除List指定元素函数部分 --通过逐一遍历,将每一个元素与指定元素进行equals();


在List中删除元素的方法:
1.for循环遍历list删除指定元素

2.增强for循环

3.iterator遍历

删除一个特定元素时,三种方法均可使用;删除多个元素时,应使用迭代器iterator
2.2统计文字中的单词数量并按出现次数排序(题集题目)
2.2.1伪代码(不得复制代码,否则扣分)
创建HashMap<String,Integer>
读入单词
遇到"!!!!!"跳出读入循环
foreach遍历(遇到h中没有的key,value=1;遇到h中有的key,在原有的value基础上+1)
Collections.sort实现value降序比较(value相同时,key升序排序)
输出h.size()
foreach输出前十的getkey()和getvalue()
2.2.2实验总结
- 本题使用Map集合中的HashMap,首先是实现单词的读入;遇到单/多个空格时,使用正则表达式
String[] s = x.split(" \\s+");读入过程方法与7-2略有不同,遇到Map中已有的键值,在原有的value基础上加1;反之,令其相应的value值为1,实现相应的循环遍历;通过Map.Entry方法,重写Collections.sort(),实现次数降序输出,遇到次数相同的情况,按键值升序输出;最后输出HashMap.size()和排序在前十的相应键值和次数
HashMap--当需要键值对表示,又不关心顺序可采用
TreeMap--当需要键值对,并关心元素的自然排序时可采用
2.3倒排索引(题集题目)
2.3.1截图你的代码运行结果

2.3.2伪代码(不得复制代码,否则扣分)
创建`Map<String, ArrayList<Integer>> h = new TreeMap<String, ArrayList<Integer>>();`
创建`ArrayList`;实现循环输入单词:如果遇到"!!!!!"跳出循环;反之,如果在h中没有找到相应的key,将其添加到h中并将所在的行数值添加到value(ArrayList)中,反之,判断当前行数是否存在于已有的value(ArrayList);
创建迭代器Iterator遍历输出;(完成第一部分)
输入字符串数组(正则表达式空格隔开)
如果h中没有同时存在的要求单词,`System.out.println("found 0 results");`,反之,求要求单词所在行数的交集;
如果不存在交集,`System.out.println("found 0 results");`,反之,输出交集及对应行数(完成第二部分)
2.3.3实验总结
- 在Map创建过程中就遇到瓶颈,如何确定value的数据类型,通过同学启发使用
ArrayList<Integer>来实现;前期读入单词和集合类题目相似,第一部分使用迭代器Iterator实现遍历输出更直接;最困难的部分是实现交集部分所在行数及内容的输出,通过for循环嵌套判断语句按照伪代码的思路一步一步的实现,本题可以说是最为复杂的一道泛型与集合类的PTA题目
2.4Stream与Lambda
编写一个Student类,属性为:
private Long id; private String name; private int age; private Gender gender;//枚举类型 private boolean joinsACM;//是否参加过ACM比赛
创建一集合对象,如List,内有若干Student对象用于后面的测试。
2.4.1使用传统方法编写一个搜索方法List<Student> search(Long id, String name, int age, Gender gender, boolean joinsACM),然后调用该方法将id>某个值,name为某个值, age>某个值, gender为某个值,参加过ACM比赛的学生筛选出来,放入新的集合。在main中调用,然后输出结果。(截图:出现学号、姓名)




2.4.2使用java8中的stream(), filter(), collect()编写功能同4.1的代码,并测试(要出现测试数据)。构建测试集合的时候,除了正常的Student对象,再往集合中添加一些null,你编写的方法应该能处理这些null而不是抛出异常。(截图:出现学号)
List<Student> newStudent = student.stream().filter(e -> e!=null&&e.getId()>2016L&&e.getName().equalsIgnoreCase("Lin")&&e.getAge()>18&&e.getGender()==Gender.Male&&e.isJoinsACM()==true).collect(Collectors.toList());

- 结果与上述一致
2.5泛型类:GeneralStack
2.5.1GeneralStack接口的代码

2.5.2结合本题与以前作业中的ArrayListIntegerStack相比,说明泛型有什么好处
- 使用
interface GeneralStack<T>泛型定义接口,可以按照类型参数表列实现题目要求的IntegerDoubleCar,极大程度上减少代码冗余,使得代码更具灵活性,亦便于修改;与此同时,可以消除代码中出现不必要的强制类型转换现象(避免ClassCastException)
3.码云及PTA
3.1码云代码提交记录

3.2截图PTA题集完成情况图



3.3统计本周完成的代码量
| 周次 | 总代码量 | 新增代码量 | 总文件数 | 新增文件数 | ||||
|---|---|---|---|---|---|---|---|---|
| 第一周 | 189 | 189 | 10 | 10 | ||||
| 第二周 | 304 | 304 | 9 | 9 | ||||
| 第三周 | 557 | 557 | 10 | 10 | ||||
| 第四周 | 621 | 621 | 8 | 8 | ||||
| 第五周 | 326 | 326 | 7 | 7 | ||||
| 第六周 | 972 | 972 | 12 | 12 | ||||
| 第七周 | 338 | 338 | 4 | 4 | ||||
| 第八周 | 379 | 379 | 6 | 6 | ||||
| 第九周 | 492 | 492 | 5 | 5 |
4.评估自己对Java的理解程度
| 维度 | 程度 | |
|---|---|---|
| 语法 | 掌握目前基本的Java语法,PTA的题目基本能完成,但综合类的PTA题目还有一定的难度 | |
| 面向对象设计能力 | GUI界面设计还有待提高 | |
| 应用能力 | 掌握的知识还不够深入,可以借助书籍逐步实现小工具的创建设计 | |
| 至今为止代码行数 | 将近4000行 |
201621123040《Java程序设计》第九周学习总结的更多相关文章
- 201521123027 <java程序设计>第九周学习总结
1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2.书面作业 Q1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什 ...
- 20145220java程序设计第九周学习总结
20145220java程序设计第九周学习总结 教材学习内容总结 JBDC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商对接口直接操作,开发人员无须接触底层数据可驱动程序的差异 ...
- 201771010134杨其菊《面向对象程序设计java》第九周学习总结
第九周学习总结 第一部分:理论知识 异常.断言和调试.日志 1.捕获 ...
- 201521044152<java程序设计>第一周学习总结
本周学习总结 java开发时间虽然很短,但是发展迅速,已成为现在非常流行的一门语言,很开心能有幸学习java.第一周学习了java的平台,运行环境jdk以及jrt等等新名词,还了解了eclipse的基 ...
- 20145304 刘钦令 Java程序设计第二周学习总结
20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...
- 20145304 刘钦令 Java程序设计第一周学习总结
20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...
- 201621123007 Java程序设计第一周 学习总结
第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...
- 马凯军201771010116《面向对象与程序设计Java》第九周学习总结
一.理论知识部分 异常.日志.断言和调试 1.异常:在程序的执行过程中所发生的异常事件,它中断指令的正常执行. 2.Java的异常处理机制可以控制程序从错误产生的位置转移到能够进行错误处理的位置. 3 ...
- 201521123063 JAVA程序设计 第二周学习总结
1.本周学习重点(2.27-3.5) java中的数组 以二维数组为例,数组名为scores,则 (1)先声明数组 int[][] scores;或int scores[][];或int[] scor ...
- 《Java》第九周学习总结
下载mysql 选择mysql的管理软件 idea可以直接连接 然后用库运行程序,但是没有截图,,因为想在navicat上试试,可惜速度太慢了 打开idea又很慢,所以明天再更新
随机推荐
- C#图解教程 第二十四章 反射和特性
反射和特性 元数据和反射Type 类获取Type对象什么是特性应用特性预定义的保留的特性 Obsolete(废弃)特性Conditional特性调用者信息特性DebuggerStepThrough 特 ...
- NgRx/Store 4 + Angular 5使用教程
这篇文章将会示范如何使用NgRx/Store 4和Angular5.@ngrx/store是基于RxJS的状态管理库,其灵感来源于Redux.在NgRx中,状态是由一个包含action和reducer ...
- Axure 入门学习
Axure RP是美国Axure Software Solution公司旗舰产品,是一个专业的快速原型设计工具,让负责定义需求和规格.设计功能和界面的专家能够快速创建应用软件或Web网站的线框图.流程 ...
- luogu【P3387】【模板】缩点
原题入口 PS:这个题数据是由Hany01大大出出来的 %%% 这个题显然是一道强联通+DAGdp的题 (题目背景有= =) 缩点的原因就是:不缩会一直在一个地方绕圈圈 而且不能进行后面的DAPdp ...
- [Luogu4149][IOI2011]Race
BZOJ权限题qwq Luogu sol 树上路径当然是淀粉质辣! 考虑所有过重心的路径.开一个\(10^6\)大小的数组\(t\)表示某一路径长度的最小边数,初始化为\(inf(i>0)\), ...
- [Luogu3425][POI2005]KOS-Dicing
题面戳这 题目描述 Dicing is a two-player game and its outcome is fully random. Lately its popularity increas ...
- Luogu3527:[POI2011]MET-Meteors
题面 Luogu Sol 整体二分 比较简单,当练手题 每次树状数组统计 # include <bits/stdc++.h> # define RG register # define I ...
- [BZOJ1007] [HNOI2008] 水平可见直线 (凸包)
Description 在xoy直角坐标平面上有n条直线L1,L2,...Ln,若在y值为正无穷大处往下看,能见到Li的某个子线段,则称Li为可见的,否则Li为被覆盖的. 例如,对于直线:L1:y=x ...
- Windows Developer Day - MSIX and Advanced Installer
前面一篇我们介绍了 Adaptive Cards 的基础知识,而在 Windows Developer Day 的 Modern Application Experience 环节,还有一个需要划重点 ...
- css中的注意项,可能会帮助到大家哦!
CSS样式层叠表 1.link与@import的区别(5点) (1).link为XHTML的标签,可以引进CSS样式表,除了引进CSS文件还可以引进其他的文件如.js或.rss文件;@import为C ...