Week09《java程序设计》第九次作业总结

1. 本周学习总结

1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。

答:

2. 书面作业

本次作业题集集合

1. List中指定元素的删除(题集题目)

1.1 实验总结。并回答:列举至少2种在List中删除元素的方法。

答:

  • 实验总结:在public static List convertStringToList(String line) 函数中,要注意以单个或多个空格为分割符,用Split()分隔出元素,并分隔多个空格[split(" +")]。在删除元素函数中,特别注意是否删除正确,循环条件是否满足删除重复元素的要求。在这里,从list的后面逐个比较调用equals方法,true就remove这个元素。
  • 删除元素的方法:

    1、 从list的后面开始删除
for (int i =list.size()-1 ; i >-1; i--) {
if(list.get(i).equals(str)){
list.remove(i);
}
}

2、利用迭代器,先越过一个元素,判断该元素是否满足删除条件,是就将其删除,循环判断是否还有下一个元素。应先调用next,再调用remove。

for (Iterator<String> iterator = list.iterator(); iterator.hasNext();) {
String num = (String) iterator.next();
if list.get(i).equals(str))
iterator.remove();
}

2. 统计文字中的单词数量并按出现次数排序(题集题目)

2.1 伪代码(不得复制代码,否则扣分)

答:

建立 wordsMap集合
while(true){
读取字符串到word
count=wordMap.get(word);获得该单词出现的次数
if(word为“!!!!!”)
跳出当前读取单词的循环
else
if(count不为null)
wordMap.put(word,++count);//不是第一次出现的单词,次数在原来上加一
else
wordMap.put(word,1);//第一次出现的单词,次数置为1
} 打印wordMap的长度,获得单词总数。
List<Map.Entry<String,Integer>> list;//取wordsMap中的键值对放入list中。
Collections.sort(list) {//键值对比较排序
compare(o1.o2)
if(o1.value==o2.value)
返回o1与o2的key比较结果
else
返回o1和o2的value比较结果
}
i=0;
循环输出前10个单词和对应次数,用i>9做标记。
System.out.println(list);

2.2 实验总结

答:

1、使用HashMap集合,Key放单词(String),value放次数(Integer)

2、循环获得单词和出现次数。单词第一次出现value置为1,否则就在原有的value值上加一。

Integer count = words.get(word);
if(count!=null){
count++;words.put(word, count);
}
else{
words.put(word, 1);
}

3、取wordsMap键值对放入list.使用Map.Entry<K,V>

4、比较键值对的value,相同就比较key.Collections.sort方法使用内部类重新定义compare方法

Collections.sort(list,new Comparator<Map.Entry<String, Integer>>() {

		@Override
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
if(o1.getValue()==o2.getValue())
return o1.getKey().compareTo(o2.getKey());
return o2.getValue()-o1.getValue();
}
});

3. 倒排索引(题集题目)

本题较难,做不出来不要紧。但一定要有自己的思考过程,要有提交结果。

3.1 截图你的代码运行结果

答:

3.2 伪代码(不得复制代码,否则扣分)

答:

int count=0;//标记行数
while(true){
读取一行到strline;
count++;
if(strline为"!!!!!")
跳出读取单词的循环
esle 新建Scanner,从strline读取
Map linemap.put(Integer,String);//记录每行的内容
while(strScanner.hasnext()){
读取strSacnner.next()到word中
if
集合中已经存在该单词,则将count直接加到单词对应的行数表中
Map wordMap.put(word,List<Integer>);//记录单词和单词出现的行数集合
else
集合不存在该单词
新建List,将当前行数add进表中,再wordMap.put(word,list);
}
for(Map.Entry<String,List<Integer>> e:wordMap.entrySet())//循环打印索引
println(e);
while
get keyString;//获得查询关键字
for(Map.Entry<String,List<Integer>> e:linemap.entrySet())//在行集合的字符串中 判断是否包含该关键字
if (e.getvalue.comtains(keyString)==true)
println(e.getkey+e.getvalue);
else
println("found 0 results");

3.3 实验总结

答:这题做得时间较长,但收获也很多。首先使用两个Map集合,wordMap存放单词和单词出现的行数的集(List),linemap存放行数和每一行的内容。将所需元素循环存入两个Map中。利用Map.Entry遍历输出wordMap,完成索引的打印。读取关键字,在linemap中操作,循环判断每一行的value中是否有包含关键字,是则输出该行的Key和value.循环结束仍没有改关键字,就输出found o result.以上是我的整体思路。

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 search(List 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

题集jmu-Java-05-集合之GeneralStack

5.1 GeneralStack接口的代码

答:接口代码:

public interface GeneralStack<E> {
E push(E item); //如item为null,则不入栈直接返回null。
E pop(); //出栈,如为栈为空,则返回null。
E peek(); //获得栈顶元素,如为空,则返回null.
public boolean empty();//如为空返回true
public int size(); //返回栈中元素数量
}

5.2 结合本题与以前作业中的ArrayListIntegerStack相比,说明泛型有什么好处

答:在ArrayListIntegerStack中栈存放的元素类型必须明确指明,一旦指明,就无法随意更改。使用泛型,是使用字母E、T、K等作为类型代号来声明对象的类型。当接口使用泛型时,会极大遍历接口的操作,减少不同类型的相同代码,例如将GeneralStack和

public class ArrayListGeneralStack implements GeneralStack 定义为泛型,这样就可以支持传入任何类型的数据。当操作该接口时,可以指定E代表的类型,则接口中定义的方法也可以直接套用E类型。

3.码云及PTA

题目集:jmu-Java-05-集合

3.1. 码云代码提交记录

在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

3.2 截图PTA题集完成情况图

需要有两张图(1. 排名图。2.PTA提交列表图)

3.3 统计本周完成的代码量

需要将每周的代码统计情况融合到一张表中。

周次 总代码量 新增代码量 总文件数 新增文件数
1 0 0 0 0
2 0 0 0 0
3 0 0 0 0
4 0 0 0 0
5 739 739 16 16
6 1084 345 28 12
7 1180 96 30 2
8 1627 447 35 5
9 1986 359 44 9
10 2350 364 56 12

4. 评估自己对Java的理解程度

尝试从以下几个维度评估自己对Java的理解程度

维度 程度
语法 基本常用语法可以熟练运用,PTA的题目部分可以自己解决,部分要多多请教别人
面向对象设计能力 面向对象编程学习中,使用面向对象思想为所要解决比较简单的问题建模应该是可以的
应用能力 感觉基础还是没打实,基本没有什么应用能力
至今为止代码行数 2350

Week09《java程序设计》第九次作业总结的更多相关文章

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

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

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

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

  3. C语言程序设计第九次作业

    一.学习内容      本次课我们重点学习了怎样向函数传递数组,鉴于大家对函数和数组的理解和运用还存在一些问题,下面通过一些实例加以说明,希望同学们能够认真阅读和理解.      例1:火柴棍拼数字 ...

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

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

  5. 20145226夏艺华 《Java程序设计》预备作业3

    安装虚拟机 上学期开学的时候就安装了Linux虚拟机,由于我的是Mac OS,所以和windows下的安装有所不同. 我使用的是VirtualBoxVM虚拟机,稳定性还不错,需要的同学可以从https ...

  6. java程序设计第二次作业

  7. Java程序设计的第一次作业1

  8. JAVA程序设计的第一次作业

    这是我第一次接触博客,刚开始用博客很生疏,感觉很麻烦,但是后来慢慢从老师那里了解到了许多博客可以带给我们的便利.通过博客,我们不仅可以记录自己从刚开始进入程序学习的懵懵懂懂到后来想要学,想深究,想探讨 ...

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

    201521123061 <Java程序设计>第九周学习总结 1. 本周学习总结 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1 ...

随机推荐

  1. Please check registry access list (whitelist/blacklist)

    https://blog.csdn.net/sprita1/article/details/51735566

  2. handle 和module

    <httpHandlers> <add verb="*" path="*" type="ClassLibrary831.TestHa ...

  3. 【Thinking in Java, 4e】初始化与清理

    [用构造器确保初始化] [方法重载] 涉及基本类型的重载 1.如果传入的数据类型小于方法中声明的形式参数类型:实际数据类型会被提升. 2.如果传入的数据类型大于方法中声明的形式参数类型:编译器报错,应 ...

  4. ora-12154:tns:could not resolve the connect identifier specied

    今天在发布网站时,点击登录之后出现了这个问题,修改一下环境变量,该问题就顺利解决了,解决方法如下: 在环境变量里,找到[Administrator的用户变量(U)],在其之下新建一个用户变量: 变量名 ...

  5. wix toolset将 cab 打包进msi

    在***wxs中添加配置 <MediaTemplate EmbedCab="yes" /> 下面是一个简单配置:(包含写注册表) <?xml version=&q ...

  6. 解题报告:hdu2191汶川地震 - 多重背包模板

    2017-09-03 17:01:36 writer:pprp 这是一道多重背包裸题 - 记得是从右向左进行,还有几点需要注意啊,都在代码中表示出来了 代码如下: /* @theme:hdu2191 ...

  7. 04_Storm编程上手_WordCount集群模式运行

    1. 要解决的问题:代码打包 前一篇的代码,在IDEA中通过maven工程创建,通过IDEA完成代码打包 1)File -> Project Structure  2) 选择Artifacts, ...

  8. Mysql uploader File

    前几天和哥们做一次渗透测试,内网情况.防护相当严格. 内网不允许访问DMZ,DMZ不允许访问内网,除了服务端口,比如80,3306. 经过长时间的分析,就发现本机连接了内网的一个MYQL,发现WEB开 ...

  9. Linux 下的jdk安装

    Linux 下安装JDK1.8 https://www.cnblogs.com/xuliangxing/p/7066913.html http://www.oracle.com/technetwork ...

  10. Android通过soap2访问webservice遇到HTTP request failed, HTTP status: 302的问题

    笔者用C#在服务器端写了一个Webservice,然后再Android客户端通过soap2调用webservice的函数,遇到了HTTP request failed, HTTP status: 30 ...