201621123062《java程序设计》第九周作业总结
1. 本周学习总结
1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。
思维导图1:(对集合部分做了一些改动和细化)

思维导图2:(泛型)

1.2 选做:收集你认为有用的代码片段
代码片段1:(取自PPT)
使用迭代器删除元素:
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
Iterator<String> iterator = list.iterator();
System.out.println(list);
while (iterator.hasNext()) {
iterator.next(); iterator.remove();
}
System.out.println(list);
运行截图:

代码片段2:(取自PPT)
Set(集)-HashSet:
Set<String> strSet = new HashSet<>();
strSet.add("1");
strSet.add("z");
strSet.add("2");
strSet.add("a");
strSet.add("1");
for (String e : strSet) {
System.out.println(e);
}
运行截图:

觉得很奇怪为什么运行结果元素的输出顺序没有按照代码里的顺序,后面问了一个大佬,说是因为HashSet里面是无序的,它是按元素的哈希值来决定他的顺序
2. 书面作业
本次作业题集集合
2.1.List中指定元素的删除(题集题目)
2.1.1 实验总结。并回答:列举至少2种在List中删除元素的方法。
方法:
public E remove(int index):移除此列表中指定位置上的元素。向左移动所有后续元素(将其索引减 1)。
public void clear():从此列表中移除所有元素。
总结:这一题整体还是比较简单的,做的时候主要的问题是在对输入的字符串处理的时候,一开始我想要把输入的字符串转化成字符数组,但是如果使用tocharArray()方法转化以后,我不知道怎么实现题目的以空格(单个或多个)为分隔符,将line中的元素抽取出来,放入一个List这个要求,后来是看到群里有同学用了split方法,于是百度了一下这个方法:
split是分割的意思,主要是将字符串按照指定的符号分割成一个数组
然后就直接使用了这个方法解决了问题。
2.2 统计文字中的单词数量并按出现次数排序(题集题目)
2.2.1 伪代码(不得复制代码,否则扣分)
步骤:
1.根据上一题,已经做好了单词数量的统计,虽然本题不用字母排序但还是为了方便沿用上一题TreeSet
2.要改变的是需要统计每个单词出现的次数,考虑用HashMap实现对每一个单词进行次数统计
3.重写Collections中的sort方法,对集合中的每个单词次数进行比较并排序
4.输出
2.2.2 实验总结
总结:
这一题感觉做起来比较难,特别是第二步的实现。虽然想用HashMap数据类型但是不知道用什么方法,后来是参考同学的代码,发现可以用containsKey的方法进行单词次数统计。
2.3倒排索引(题集题目)
本题较难,做不出来不要紧。但一定要有自己的思考过程,要有提交结果。
2.3.1 截图你的代码运行结果
运行结果1:

2.3.2 伪代码(不得复制代码,否则扣分)
步骤:
文本的输入与行数的处理:
1.将文本按行读入,用一个动态数组存放每行输入的文本
2.在每一行文本输入的时候,定义一个字符串数组,利用split函数做字符串的分隔,并定义一个变量用于标记行数。
map映射表的建立:(key:字符串 value:对应行数)
3.遍历数组
4.建立单词第一次出现的map映射以及修改单词非第一次出现的map映射
5.打印索引表
查询单词输出对应单词行数:
6.输入的字符串文本依然做分隔
7.处理输入一个,两个,多个单词时的情况。---->定义两个动态数组,一个数组用于第一个单词的行数记录,第二个数组用于求后续遍历到的不同单词与第一个单词的行数的交集情况。
8.输出
2.3.3 实验总结
总结:
这一题对我来说难度较大,题目就看了很久,没有什么思路。首先要做的肯定是处理行数的输入和标记问题,后来一个做出来的舍友说可以用两个数组去解决,外面的动态数组存放输入一行的字符串,再用一个数组做动态数组分隔后的单词数组。于是我就用了这个方法。还有一个问题就是在处理单词交集的问题上,当时想的是第一个数组固定存放一个单词行数不变,第二个数组要不断变化,求和第一个数组的交集。于是我就以为第一个数组不需要使用动态的,但是我忽略了第一个数组是要存放单词对应的行数,不确定输入的单词对应行数有几个,数据还是动态变化的,其实两个都是要用动态数组。
至于后面的运行结果。。。也是试了很多种可能.
例如1:

输入了一个文本里面没有的,程序没有反应,后面发现遗漏了一个考虑点:

例如2:

这个我发现跟输出的答案不一样,但是PTA居然让我过了。。。然后我查了一下,是因为在第一个for里面我加了{},然后导致后面的循环有点乱,多打印出来一些东西。。。。(对于这种问题真的是很无解,因为这个错误找了两三个小时::>-<::)
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 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> students=stuList.stream().filter(stu1->stu1!=null&&stu1.getId()>10L&&stu1.getName().equals("zhang")&&stu1.getAge()>20&&stu1.getGender().equals(Gender.girl)&&stu1.isJoinsACM()).collect(Collectors.toList());
运行截图:

2.5泛型类:GeneralStack
题集jmu-Java-05-集合之GeneralStack
2.5.1 GeneralStack接口的代码
接口代码:
interface GeneralStack {
public Object push(Object item);
public Object pop();
public Object peek();
public boolean empty();
public int size();
}
2.5.2 结合本题与以前作业中的ArrayListIntegerStack相比,说明泛型有什么好处
好处:ArrayListIntegerStack直接限定了数据类型是Integer类型的,而使用泛型方法,定义了GeneralStack接口,接口中的操作对任何引用类型的数据都适用,我认为这样的方式更加灵活,也可以避免强制转换带来的风险。
3.码云及PTA
题目集:jmu-Java-05-集合
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

3.2 截图PTA题集完成情况图
需要有两张图(1. 排名图。2.PTA提交列表图)
排名图:

PTA提交列表图:


3.3 统计本周完成的代码量
需要将每周的代码统计情况融合到一张表中。
| 周数 | 行数 | 新增行数 | 文件数 | 新增文件数 |
|---|---|---|---|---|
| 1 | 57 | 57 | 5027 | 5027 |
| 2 | 400 | 400 | 10 | 10 |
| 3 | 508 | 508 | 23 | 13 |
| 5 | 609 | 609 | 31 | 8 |
| 6 | 612 | 612 | 40 | 9 |
| 7 | 584 | 584 | 46 | 6 |
| 8 | 432 | 432 | 50 | 4 |
| 9 | 620 | 620 | 56 | 6 |
| 10 | 468 | 468 | 60 | 4 |
自己的目标能实现吗?
基本可以。。。。
4. 评估自己对Java的理解程度
尝试从以下几个维度评估自己对Java的理解程度
| 维度 | 程度 |
|---|---|
| 语法 | PTA的题目大部分可以搞定,一些比较难的语法还没有掌握,基本的语法有的会忘记 |
| 面向对象设计能力 | 基本可以使用面向对象思想为所要解决的问题建模,但是有的时候要想很久 |
| 应用能力 | 可以使用Java编写一些x小程序 |
| 至今为止代码行数 | 4290 |
201621123062《java程序设计》第九周作业总结的更多相关文章
- 201521123027 <java程序设计>第九周学习总结
1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2.书面作业 Q1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什 ...
- 2016-2017-2 《Java程序设计》预备作业2总结
2016-2017-2 <Java程序设计>预备作业2总结 古希腊学者普罗塔戈说过:「头脑不是一个要被填满的容器,而是一束需要被点燃的火把.」 在对计算机系的学生情况的调查中,我说: 最近 ...
- 2016-2017-2 《Java程序设计》预备作业1 总结
2016-2017-2 <Java程序设计>预备作业1 总结 预备作业01:你期望的师生关系是什么见https://edu.cnblogs.com/campus/besti/2016-20 ...
- 20145220java程序设计第九周学习总结
20145220java程序设计第九周学习总结 教材学习内容总结 JBDC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商对接口直接操作,开发人员无须接触底层数据可驱动程序的差异 ...
- JAVA第三周作业(从键盘输入若干数求和)
JAVA第三周作业(从键盘输入若干数求和) 在新的一周,我学习了JAVA的IO编程.下面的代码实现了从键盘输入若干数求和的目标.import java.util.Scanner; public cla ...
- 2018-2019-1 20189221 《Linux内核原理与分析》第九周作业
2018-2019-1 20189221 <Linux内核原理与分析>第九周作业 实验八 理理解进程调度时机跟踪分析进程调度与进程切换的过程 进程调度 进度调度时机: 1.中断处理过程(包 ...
- 2017-2018-1 JAVA实验站 第二周作业
2017-2018-1 JAVA实验站 第二周作业 小组成员: 组长 20162318张泰毓 成员 20162303石亚鑫 20162304张浩林 20162307张韵琪 20162321王彪 201 ...
- 2017-2018-1 20179205《Linux内核原理与设计》第九周作业
<Linux内核原理与设计>第九周作业 视频学习及代码分析 一.进程调度时机与进程的切换 不同类型的进程有不同的调度需求,第一种分类:I/O-bound 会频繁的进程I/O,通常会花费很多 ...
- 2019-2020-1 20199325《Linux内核原理与分析》第九周作业
第九周作业要求: 理解Linux系统中进程调度的时机,可以在内核代码中搜索schedule()函数,看都是哪里调用了schedule(),判断我们课程内容中的总结是否准确: 使用gdb跟踪分析一个sc ...
- 2019-2020-1 20199329《Linux内核原理与分析》第九周作业
<Linux内核原理与分析>第九周作业 一.本周内容概述: 阐释linux操作系统的整体构架 理解linux系统的一般执行过程和进程调度的时机 理解linux系统的中断和进程上下文切换 二 ...
随机推荐
- sql语句中的left join,right join,inner join的区别
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录 inner join(等值连接) ...
- 获取MySql每一列的数据类型和长度默认值等信息
如何获取MySql表中各个列的数据类型? show columns from tablename 返回结果如下: id int(11) NO PRI auto_incr ...
- Directory Opus(DO) 个人使用经验 1.0
设置语言为中文 即时过滤器 设置好之后,在文件目录直接先点击“ ; ”键,然后就可以即时过滤了. 自带的图片查看器查看图片时适应窗口 设置默认窗口 将当前打开的窗口配置为默认窗口,以后每次重新打开DO ...
- tp3.2 URL_MODEL为2 配置
1. tp项目index.php同级目录 add . htaccess文件 ,rewirte重写 内容为: <IfModule mod_rewrite.c> Options +Follo ...
- [POI2007]ATR-Tourist Attractions [TPLY]
[POI2007]ATR-Tourist Attractions 题目链接(https://www.luogu.org/problemnew/show/P3451) 这种稠密图还是建议你不要跑spfa ...
- WORD分栏后左右都能编辑
操作如下: 如果是office的请参照:https://zhidao.baidu.com/question/403577041.html 如果是WPS:1.点击插入,有一个分页,点击之后下面有一个可选 ...
- javascript 特殊的面向对象以及继承详解(入门篇)
学习Javascript人,大多听说一句话叫js里面一切都是对象.我刚开始接触javascript面向对象编程时候,挺乱的,我当时习惯性的把PHP的面像对象思想套用在js上面,其实js的面向对象与传统 ...
- [转]Nginx基本功能极速入门
原文链接:Nginx基本功能极速入门 | 叉叉哥的BLOG 本文主要介绍一些Nginx的最基本功能以及简单配置,但不包括Nginx的安装部署以及实现原理.废话不多,直接开始. 1.静态HTTP服务器 ...
- 开发IOS应用真的一定要买苹果电脑设备吗?
不要忘记目的 如果你想开发ios或者苹果的app,网上很多网友都会建议你买一个苹果硬件--苹果电脑,一部分建议你安装黑苹果.这两种方案中前一种费用很高,后一种费时费力(甚至到最后都要转向购买apple ...
- 用Go自己实现配置文件热加载功能
说到配置文件热加载,这个功能在很多框架中都提供了,如beego,实现的效果就是当你修改文件后,会把你修改后的配置重新加载到配置文件中,而不用重启程序,这个功能在日常中还是非常实用的,毕竟很多时候,线上 ...