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

1.2 选做:收集你认为有用的代码片段
//stream(),filter(),collect()
List<Student> newstudent = stuList.stream().filter(e -> e!=null&&e.getId()>id&&e.getName().equals(name)&&e.getAge()>age&&e.getGender().equals(gender)&&e.isJoinsACM()==joinsACM).collect(Collectors.toList());
2. 书面作业
本次作业题集集合
1. List中指定元素的删除(题集题目)
1.1 实验总结。并回答:列举至少2种在List中删除元素的方法。
总结:remove函数中一开始使用正序遍历List,然后发现删除后后面的元素序号就变了,试图解决这个问题,然而,太复杂了,于是改变思路,换成倒序遍历,这个问题就很轻易地解决掉了。
/*倒序删除法*/
public static void remove(List<String> list, String str){
for(int i=list.size()-1;i>=0;i--){
if(list.get(i).equals(str)){
list.remove(i);
}
}
}
/*使用removeAll来删除元素*/
public static void remove(List<String> list,String str){
List newlist=new ArrayList();
for(int i=0;i<list.size();i++){
if(list.get(i).equals(str)){
newlist.add(list.get(i));
}
}
list.removeAll(newlist);
}
亲测有效↓

2. 统计文字中的单词数量并按出现次数排序(题集题目)
啊,上次作业做过了,就放一样的了。
2.1 伪代码(不得复制代码,否则扣分)
创建HashMap对象map
开始循环
if 读入单词为"!!!!!"
退出循环
else if map中没有对应key
添加单词到map中并设置value为1
else
将key对应的value值加1
创建ArrayList对象list
实现Collections接口对map对象进行排序
输出map的长度
输出排序后list中前十个数据
2.2 实验总结
一开始是先创建了一个String[]类型的对象来存储这些输入的单词,然后想一个个遍历再放进map中,结果发现放入map的过程中会出现空指针错误,最后参照7-2的方式,输入一个单词就放进map中。后面排序使用ArrayList实现Colletions接口来实现。
3. 倒排索引(题集题目)
本题较难,做不出来不要紧。但一定要有自己的思考过程,要有提交结果。
3.1 截图你的代码运行结果

3.2 伪代码(不得复制代码,否则扣分)
创建TreeMap map
创建列表s
while(有下一行文本)
if str为!!!!!
退出循环
else
将str加入列表s中
if map中没有对应的key
将单词及其所在行数添加到map中
else
if 当前行数未存在于value中
将当前行数添加到value中
创建迭代器Iterator
遍历map输出其内容
while(true)
if 索引内容为空
输出found 0 results
else
if map中不全包含索引内容
输出found 0 results
else
求索引内容中所有单词所在行数(value)的交集
if 交集为空
输出found 0 results
else
输出交集及对应行数的内容
3.3 实验总结
之前一直没怎么用过迭代器,所以就不太熟,这次这道题目好好查了一下相关内容,算是有收获吧。后面求索引内容的行数交集的时候自己编了一些方法都没成功,最后悄悄问了同学发现直接用retainAll方法就行了............
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<Student> search(List<Student> stuList, Long id, String name, int age, Gender gender, boolean joinsACM),然后调用该方法将id>某个值,name为某个值, age>某个值, gender为某个值,参加过ACM比赛的学生筛选出来,放入新的集合。在main中调用,然后输出结果。(截图:出现学号、姓名)
//search方法
List<Student> search(List<Student> stuList, Long id, String name, int age, Gender gender, boolean joinsACM){
List<Student> newstudent=new ArrayList<Student>();
for(Student e:stuList){
if(e.getId()>id&&e.getName().equals(name)&&e.getAge()>age&&e.getGender().equals(gender)&&e.isJoinsACM()==joinsACM){
newstudent.add(e);
//System.out.println(e);
}
}
return newstudent;
}
//测试数据
List<Student> student = new ArrayList<Student>();
student.add(new Student(7L,"yao",18,Gender.Male,false));
student.add(new Student(8L,"zeng",20,Gender.Famale,true));
student.add(new Student(66L,"yao",17,Gender.Famale,false));
student.add (new Student(20L,"li",19,Gender.Male,true));
student.add(new Student(33L,"yao",19,Gender.Famale,true));
student.add(new Student(52L,"liu",21,Gender.Male,false));
student.add(new Student(45L,"luo",20,Gender.Male,true));
//main
List<Student> newStudent=search(student,40L, "yao",15,Gender.Famale, false);
System.out.println("201621123033 姚雯婷");
System.out.println(newStudent.toString());
输出结果:

4.2 使用java8中的stream(), filter(), collect()编写功能同4.1的代码,并测试(要出现测试数据)。构建测试集合的时候,除了正常的Student对象,再往集合中添加一些null,你编写的方法应该能处理这些null而不是抛出异常。(截图:出现学号)
static List<Student> search(List<Student> stuList, Long id, String name, int age, Gender gender, boolean joinsACM){
List<Student> newstudent = stuList.stream().filter(e -> e!=null&&e.getId()>id&&e.getName().equals(name)&&e.getAge()>age&&e.getGender().equals(gender)&&e.isJoinsACM()==joinsACM).collect(Collectors.toList());
return newstudent;
}
//测试数据
List<Student> student = new ArrayList<Student>();
student.add(new Student(7L,"yao",18,Gender.Male,false));
student.add(new Student(8L,"zeng",20,Gender.Famale,true));
student.add(new Student(66L,"yao",17,Gender.Famale,false));
student.add (new Student(20L,"li",19,Gender.Male,true));
student.add(null);
student.add(new Student(33L,"yao",19,Gender.Famale,true));
student.add(new Student(52L,"liu",21,Gender.Male,false));
student.add(null);
student.add(new Student(45L,"luo",20,Gender.Male,true));
运行结果:

5. 泛型类:GeneralStack
题集jmu-Java-05-集合之GeneralStack
5.1 GeneralStack接口的代码
interface GeneralStack<E> {
E push(E item);
E pop();
E peek();
public boolean empty();
public int size();
}
5.2 结合本题与以前作业中的ArrayListIntegerStack相比,说明泛型有什么好处
以前作业中的ArrayListIntegerStack中的元素只能为Integer类型,但使用泛型后栈中元素可以为多种类型,这样就不用再编写存放不同数据类型的栈,减少了代码量。
PS:这题...反复提交相同的代码出现了内部错误和部分正确的情况,后来试着提交之前提交过结果是完全正确的同学的代码,结果也出现了部分正确的情况,所以在想是不是PTA出bug了???
7. 选做:逆向最大匹配分词算法
集合实验文件中的第07次实验(集合).doc文件,里面的题目6.
7.1 写出伪代码(不得直接复制代码)
创建HashSet set
将词表添加到set中
while(有下一行文本){
创建列表list来存放词汇
while 未扫描字数大于0
for j=i-1->0
if 截取字符串(j,i)存在与set中
将截取字符串(j,i)添加到列表list中
i=j
j=i-1
continue
倒序输出列表list中的元素
}
7.2 截图你的代码运行结果。

ps:将词汇添加到集合的时候,如果使用下面的代码
while(sr.hasNext()){
String word=sr.next();
set.add(word);
}
System.out.println(set.toString());
输入词汇后没有打印出来集合,猜测是不是sr.hasNext的原因....
后来用了先放进数组里再遍历添加到set中就可以了
3.码云及PTA
题目集:jmu-Java-05-集合
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

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


|
3.3 统计本周完成的代码量
需要将每周的代码统计情况融合到一张表中。
自己的目标能实现吗?
| 周次 | 总代码量 | 新增代码量 | 总文件数 | 新增文件数 |
|---|---|---|---|---|
| 3 | 547 | 547 | 12 | 12 |
| 5 | 971 | 424 | 20 | 8 |
| 6 | 1577 | 606 | 29 | 9 |
| 7 | 2187 | 1216 | 41 | 21 |
| 8 | 2793 | 606 | 49 | 8 |
| 9 | 3040 | 247 | 56 | 7 |
| 10 | 3617 | 577 | 63 | 7 |
4. 评估自己对Java的理解程度
尝试从以下几个维度评估自己对Java的理解程度
| 维度 | 程度 |
|---|---|
| 语法 | PTA上的题目大多数能做出来,语法感觉还是学的不太系统,不过通过百度和询问同学基本能解决 |
| 面向对象设计能力 | 感觉这一块也不是很熟练,虽然做购物车的时候感觉还行 |
| 应用能力 | 大概能写一些最简单的? |
| 至今为止代码行数 | 3617 |
201621123033 《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 ...
随机推荐
- File类,递归
File类 File文件和目录路径名的抽象表示形式.即,Java中把文件或者目录(文件夹)都封装成File对象. File类包含 路径 path E:\... 目录 direct ...
- LeetCode(Add Two Numbers)
一.题目要求 You are given two non-empty linked lists representing two non-negative integers. The digits a ...
- 第31章 TIM—基本定时器—零死角玩转STM32-F429系列
第31章 TIM—基本定时器 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fire ...
- 读取当前路径,列出xls文件
import java.io.File; public class GetCurrentDirectory { public String GetDirectory() { File director ...
- CSS中margin: 0 auto;样式没有生效
问题:有两个元素: A, B.两则是嵌套关系,A是B的父节点.A和B都是块元素.当在A上设置:margin: 0 auto的时候,B并没有在页面中居中. margin: 0 auto 为什么没有生效? ...
- javascript入门笔记3-dom
1.通过ID获取元素 document.getElementById("id") <!DOCTYPE HTML> <html> <head> & ...
- 在Linux上部署Kettle环境
首先我们有一个正常安装的,桌面版的Linux. Kettle的应用程序是Linux版本与Windows版本在同一个文件夹下共存的,所以可以直接把本机上的Kettle解压,通过FTP工具上传到Linux ...
- es6-promise.auto.js
使用sweetalert2的IE浏览器报错,导入文件 链接:https://pan.baidu.com/s/1mOcsN_o8m-7I7Rej1NPkiw 提取码:9xsj
- UVa中国麻将(Chinese Mahjong,Uva 11210)
简单的回溯题 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm ...
- 【vlan-端口配置】
搭建好拓扑图如下: 分别配置两台终端的ip地址 创建vlan把e0/4/0接口加入到新的vlan中 连通性失败 . 同理在把e0/4/1加入到vlan视图中 连通性成功 : 搭建好拓扑图如下 进入e0 ...