201621123023《Java程序设计》第9周学习总结
一.本周学习总结
1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。
二.书面作业
1. List中指定元素的删除(题集题目)
1.1 实验总结。并回答:列举至少2种在List中删除元素的方法。
本题中要求
以空格(单个或多个)为分隔符,将line中的元素抽取出来,放入一个List
,实现的方法有两种:- 利用扫描器按行扫描,取出每行后再利用扫描器进行扫描,如下
while(scanner.hasNext())
- 使用正则表达式,如下
String[] word=in.nextLine().split(" +");
- 利用扫描器按行扫描,取出每行后再利用扫描器进行扫描,如下
在List中删除元素:
- for循环列表,如
for(int i=0;i<list.size();i++),
用list.get(i).equals("XXX")
进行判断再用list.remove(i)
删除 - foreach循环列表,如
for(String e:list)
,用e.equals("XXX")
进行判断再用list.remove(e)
删除
- for循环列表,如
2. 统计文字中的单词数量并按出现次数排序(题集题目)
2.1 伪代码(不得复制代码,否则扣分
1.创建TreeMap
2.依次取入单词,判断是否为map中的key,是则对应value值加1,否则将其放入map且value赋为1
3.运行步骤2直到遇到"!!!!!"退出
4.将map转为list并按要求进行排序
5.将排序后的map按要求输出
2.2 实验总结
刚开始做这题因为不知道如何对map进行按要求排序(只知道map会进行自然排序),所以准备用数组来完成,写完发现虽然能够按要求输出,但是因为定义的数组过大在PTA上会提示
大文件按常规方法大概需要1600ms左右
;对map进行自定义排序可借助ArrayList的Collection.sort
来完成。
3. 倒排索引(题集题目)
3.1 截图你的代码运行结果
3.2 伪代码(不得复制代码,否则扣分
1.创建TreeMap,设置key类型为String、value类型为List(为了存入多个对应的值)
2.按行读入并标记行号,依次取入单词,判断是否为map中的key,是则将行号加入到对应的value列表中,否则将其放入map且新建value列表存放行号
3.输出map
4.将输入的一行读入,按空格分开并存入数组
5.新建List,循环步骤4得到的数组,依次在map中查找数组中的单词对应的value并存入另一个新建的List,如果第二个List不为空就将其与第一个List合并,否则退出循环
6.创建HashMap用来存放各行号出现的个数,key为行号,value为次数
7.循环步骤6中的HashMap,找出value与步骤4中数组长度相同的key并存入新建的List中
8.步骤7中新建的List中的数据即为要求的存在查找单词的行号,对其进行排序
9.按要求输出步骤8中排过序的List中的值的对应行即可
3.3 实验总结
看到题目的第一想法是一个key对应多个value,查到
IdentityHashMap
好像可以实现,但运行才发现他只是能同时存在多个value而不是我所想要的value全在一个容器里,经同学介绍后才知道可以定义value类型为List;在新建List时以List<Integer> a;
方式新建在运行时会报错NullPointerException
,改为List<Integer> a = new ArrayList<Integer>()
即可解决。有一点不太明白,为什么我的代码在自己电脑上可以正确运行(运行老师的后台数据也依然是正确的,格式也都一模一样),但是PTA上提交却一直报错。
4.Stream与Lambda
编写一个Student类,属性为:
private Long id;
private String name;
private int age;
private Gender gender;//枚举类型
private boolean joinsACM; //是否参加过ACM比赛
创建一集合对象,如List< Student>,内有若干Student对象用于后面的测试。
4.1 使用传统方法编写一个搜索方法
List<Student> search(List<Student> 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而不是抛出异常。(截图:出现学号)
5. 泛型类:GeneralStack
5.1 GeneralStack接口的代码
5.2 结合本题与以前作业中的
ArrayListIntegerStack
相比,说明泛型有什么好处在
ArrayListIntegerStack
中定义的都是Integer型,所以只能存放Integer型对象,本题中使用了泛型,就可以不用考虑将要存放对象的类型而可以存放任意类型对象。
三.码云及PTA
3.1. 码云代码提交记录
3.2 截图PTA题集完成情况图
3.3 统计本周完成的代码量
周次 | 总代码量 | 新增代码量 | 总文件数 | 新增文件数 |
---|---|---|---|---|
1 | 193 | 193 | 6 | 6 |
2 | 625 | 432 | 35 | 29 |
3 | 1076 | 451 | 41 | 6 |
4 | 1472 | 396 | 47 | 6 |
5 | 1932 | 460 | 53 | 6 |
6 | 2235 | 303 | 57 | 4 |
7 | 2651 | 416 | 62 | 5 |
8 | 2895 | 244 | 67 | 5 |
9 | 3275 | 380 | 73 | 6 |
四.评估自己对Java的理解程度
维度 | 程度 |
---|---|
语法 | PTA的题目大部分都能解决,稍难的要多花点时间 |
面向对象设计能力 | 基本能按要求使用面向对象思想为所要解决的问题建模 |
应用能力 | 可以使用Java编写一些简单的小工具 |
至今为止代码行数 | 3275 |
201621123023《Java程序设计》第9周学习总结的更多相关文章
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
随机推荐
- 跟我学算法-人脸识别(Siamese network) 推导
Siamese network 训练神经网络存在两种形式: 第一种:通过Siamese network 和 三元组损失函数 来训练图片之间的间隔 第二种: 通过Siamese network 和 si ...
- es6 class 了解
ES6之class ES5中通常通过构造函数和原型的组合形式来创建对象.在ES6中引入class作为对象模板, Class定义语法 class point{ constructor(x,y){ thi ...
- 迷你MVVM框架 avalonjs 1.3.3发布
大家可以在仓库中看到,多出了一个叫avalon.observe的东西,它是基于Object.observe,dataset, Promise等新API实现.其中,它也使用全新的静态收集依赖的机制,这个 ...
- 迷你MVVM框架 avalonjs 1.2.4发布
这段时间一直忙于建立avalon的单元测试,与重构官网.对avalon的更新都是来自公司内部的需求,性能优化与一些BUG修复. 添加大量调试日志. 重构shimController,以提高性能. cr ...
- 转化RGB颜色为CMYK颜色
procedure RGBTOCMYK(R : byte; G : byte; B : byte; var C : byte; var M : byte; var Y : byte; var K : ...
- Oracle的服务端_默认_启动的服务
- ie11的仿真模式
1>在ie11的仿真模式中,所有版本的按钮都失效,解决方法:再ie的配置中,选项-高级-重置,然后重启ie11 程序员的基础教程:菜鸟程序员
- fiddler手机抓包
配置好之后,发现手机不能连接代理服务器,用netstat发现根本就没有手机的ip地址,于是猜想是不是防火墙的问题,关闭防火墙果然能连上,开启防火墙又连不上了,这就说明确实是防火墙的问题,关闭防火墙又很 ...
- 利率计算v2.0--web版--软件工程
.客户说:帮我开发一个复利计算软件. .如果按照单利计算,本息又是多少呢? .假如30年之后要筹措到300万元的养老金,平均的年回报率是3%,那么,现在必须投入的本金是多少呢? .利率这么低,复利计算 ...
- 我读《大数据时代的IT架构设计》
架构设计是一门艺术,对架构的掌握要通过多看,多学,多交流,多积累,从实战架构上总能吸收到很好的营养,这边书虽然 (一).hadoop技术处理电信行业的上网日志 根据上网的url或未知url爬取内容,进 ...