第九次作业

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周学习总结的更多相关文章

  1. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  2. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  3. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  6. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  7. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  9. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  10. 《Java程序设计》第二周学习总结

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. Linux中的/etc/nologin问题

    /etc/nologin 文件给系统管理员提供了在 Linux 系统维护期间禁止用户登陆的方式. 如果系统中存在 /etc/nologin 文件那么普通用户登陆就会失败. 这是一种提高安全性和防止数据 ...

  2. CentOS 7与 Windows双系统丢失Windows启动项及默认启动项修改

    1.Windows启动项消失的原因:   在安装Win7.8/10系统+CentOS7双系统后,默认会将mbr(Main Boot Record)改写为grub2,默认的CentOS7无法识别Wind ...

  3. System.Web.Caching.Cache

    此类是利用缓存来保存信息的.可以把一些稳定的数据,不会随用户而改变的信息利用Cache保存起来,可以优化网站的速度. Cache辅助类已上传:GitHub Cache和Session,cookie的区 ...

  4. .net core自定义特性操作

    最近移植之前写的几个类,发现特性操作发生了一些改变. 直接看代码,建立表和字段特性类,添加一个用户表,设置好特性. using System; namespace TestDemo { /// < ...

  5. eclipse环境Dynamic web module version 3.1版本的进步,简化Dynamic web object 中Servlet类的配置,不用web.xml配置<Servlet>

    eclipse环境Dynamic web module version 3.1版本之前,Dynamic web object 中Servlet类的配置,要在web.xml 配置<Servlet& ...

  6. ECMAscript6(ES6)新特性语法总结(一)

    ES6/ES2015,,在ES5的基础上扩展了很多新的功能,在使用的时候要慎重,因为有一部分js代码在部分浏览器是不兼容的,但是所有写在服务器端的代码基本上都支持ES6的写法. 新特性: 一.开启严格 ...

  7. cordova创建工程添加插件

    创建工程 phonegap创建工程 代码 用以创建自己需要的  工程名   ; 报名  ;类名 ; 应用名 cordova create hello com.example.hello HelloWo ...

  8. vim 个性化设置和操作

    一.vim 设置 1. 设置行号显示 1) 临时显示 命令行模式 :set nu 2) 永久显示 # vim ~/.vimrc 插入一行代码: set number 若没有该文件,在用户主目录 (/h ...

  9. 返回固定数据的web服务器

    import socket def handle_client(socket_con): """ 接收来自客户端的请求,并接收请求报文,解析,返回 "" ...

  10. 【转载】java 客户端链接不上redis解决方案 (jedis)

    本文出自:http://blog.csdn.net/lulidaitian/article/details/51946169 出现问题描述: 1.Could not get a resource fr ...