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程序设计》第九周作业总结的更多相关文章

  1. 201521123027 <java程序设计>第九周学习总结

    1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2.书面作业 Q1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什 ...

  2. 2016-2017-2 《Java程序设计》预备作业2总结

    2016-2017-2 <Java程序设计>预备作业2总结 古希腊学者普罗塔戈说过:「头脑不是一个要被填满的容器,而是一束需要被点燃的火把.」 在对计算机系的学生情况的调查中,我说: 最近 ...

  3. 2016-2017-2 《Java程序设计》预备作业1 总结

    2016-2017-2 <Java程序设计>预备作业1 总结 预备作业01:你期望的师生关系是什么见https://edu.cnblogs.com/campus/besti/2016-20 ...

  4. 20145220java程序设计第九周学习总结

    20145220java程序设计第九周学习总结 教材学习内容总结 JBDC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商对接口直接操作,开发人员无须接触底层数据可驱动程序的差异 ...

  5. JAVA第三周作业(从键盘输入若干数求和)

    JAVA第三周作业(从键盘输入若干数求和) 在新的一周,我学习了JAVA的IO编程.下面的代码实现了从键盘输入若干数求和的目标.import java.util.Scanner; public cla ...

  6. 2018-2019-1 20189221 《Linux内核原理与分析》第九周作业

    2018-2019-1 20189221 <Linux内核原理与分析>第九周作业 实验八 理理解进程调度时机跟踪分析进程调度与进程切换的过程 进程调度 进度调度时机: 1.中断处理过程(包 ...

  7. 2017-2018-1 JAVA实验站 第二周作业

    2017-2018-1 JAVA实验站 第二周作业 小组成员: 组长 20162318张泰毓 成员 20162303石亚鑫 20162304张浩林 20162307张韵琪 20162321王彪 201 ...

  8. 2017-2018-1 20179205《Linux内核原理与设计》第九周作业

    <Linux内核原理与设计>第九周作业 视频学习及代码分析 一.进程调度时机与进程的切换 不同类型的进程有不同的调度需求,第一种分类:I/O-bound 会频繁的进程I/O,通常会花费很多 ...

  9. 2019-2020-1 20199325《Linux内核原理与分析》第九周作业

    第九周作业要求: 理解Linux系统中进程调度的时机,可以在内核代码中搜索schedule()函数,看都是哪里调用了schedule(),判断我们课程内容中的总结是否准确: 使用gdb跟踪分析一个sc ...

  10. 2019-2020-1 20199329《Linux内核原理与分析》第九周作业

    <Linux内核原理与分析>第九周作业 一.本周内容概述: 阐释linux操作系统的整体构架 理解linux系统的一般执行过程和进程调度的时机 理解linux系统的中断和进程上下文切换 二 ...

随机推荐

  1. CSS3动画--过渡效果

    CSS3动画--过渡效果 transition                               设置四个过渡属性 transition-property          过渡的名称 tr ...

  2. 第三篇:数据可视化 - ggplot2

    前言 R语言的强大之处在于统计和作图.其中统计部分的内容很多很强大,因此会在以后的实例中逐步介绍:而作图部分的套路相对来说是比较固定的,现在可以先对它做一个总体的认识. 在上一篇文章中,介绍了使用gr ...

  3. 【BZOJ4556】字符串(后缀数组,主席树)

    [BZOJ4556]字符串(后缀数组,主席树) 题面 BZOJ 题解 注意看题: 要求的是\([a,b]\)的子串和[c,d]的\(lcp\)的最大值 先来一下暴力吧 求出\(SA\)之后 暴力枚举\ ...

  4. 我也不知道什么是"莫比乌斯反演"和"杜教筛"

    我也不知道什么是"莫比乌斯反演"和"杜教筛" Part0 最近一直在搞这些东西 做了将近超过20道题目吧 也算是有感而发 写点东西记录一下自己的感受 如果您真的 ...

  5. 【CJOJ1793】【USACO 4.3.2】素数方阵

    题面 Description 在下面的方格中,每行,每列,以及两条对角线上的数字可以看作是五位的素数.方格中的行按照从左到右的顺序组成一个素数,而列按照从上到下的顺序.两条对角线也是按照从左到右的顺序 ...

  6. idea Artifact mdn:war exploded: Server is not connected. Deploy is not available.

    idea 启动tomcat报的错误,启动tomcat无效 看了网上的好几种说发 说删除tomcat/bin/catalina.bat  里的JAVA_OPTS= -Xms512M -Xmx512M - ...

  7. Android JNI开发之C/C++层调用JAVA

    一.从C/C++层调用JAVA层代码(无参数调用) //在c代码里面调用java代码里面的方法 // java 反射 // 1 . 找到java代码的 class文件 // jclass (*Find ...

  8. 3.2.2 break 与 continue 语句

    break 语句和 continue语句在while循环和for循环中都可以使用,并且一般常与选择结构结合使用.一旦break语句被执行,将使得break语句所属层次的循环提前结束.continue语 ...

  9. sprintf函数使用

    功能 把格式化的数据写入某个字符缓冲区. 所需头文件 stdio.h 原型 int sprintf( char *buffer, const char *format, [ argument] - ) ...

  10. 2018 年 3 月 iOS架构师 面试总结

    序言: 今年2月中下旬因为个人原因,换了一份工作,3月初期间面试了有3,4家,基本都是D轮或者刚刚上市的公司,也有上榜的BAT,也从他们的面试笔试中看到了自己的一些不足,于是就想写出来和大家分享一下, ...