201521123027 <java程序设计>第八周学习总结
1.本周学习总结
1.1思维导图

2.书面作业
Q1.List中指定元素的删除(题目4-1)
1.1 实验总结

总结:判断List中是否存在指定元素,需要用到equals方法,若存在就用remove进行对元素的删除。remove方法就是删除当前下标为i的元素,然后将该元素的所有元素向前移一位,i自减。
Q2.统计文字中的单词数量并按出现次数排序(题目5-3)
2.1 伪代码(简单写出大体步骤)
(1)创建HashMap对象Map<String,Integer> map = new HashMap<String,Integer>();
(2)统计字符出现次数,若为空,则为1;若不为空,则n+1;
(3)转化,Map转化为List;
(4)Collections.sort比较排序;
(5)输出十个;
2.2 实验总结

总结:首先此题要使用到HashMap,将字符串中的字符存入且没有重复。
(1)判断输入的字符是否为空,若为空,则赋值value=1;若不为空,则n+1;这里要用到Map中的get()、put()方法;
(2)List<Map.Entry<String, Integer>> entryList=new ArrayList();将Map转化为List,因为Collections.sort不能用在Map中;
(3)另外还需要使用到 Comparator中的Compare对字符进行按照value从大到小排序;
Q3.倒排索引(题目5-4)
3.1 截图你的提交结果(出现学号)

3.2 伪代码(简单写出大体步骤)
(1)构建TreeMap,用于存放单词和单词所在行数;
(2)split方法,将单词存在数组中;
(3)将数组与List<String> line比较,找出每个单词所在行数,存入Map中;
(4)遍历找关键字,若找到,则输出所在行数和所在行的一整句;若找不到,输出found 0 results。
3.3 实验总结
(1)Map、Set、List的使用;
(2)调用split方法将一句话根据空格分开存入数组中,在与原句进行查找所在行数;
我感觉这一题是PTA中最难的一题,若让我独立完成,我认为我做不出来,这一题是参考了同学的代码以及同学的讲解,但是还没有完完全全掌握,还需要再琢磨、修改。
Q4.Stream与Lambda
编写一个Student类,属性为:
private Long id;
private String name;
private int age;
private Gender gender;//枚举类型
private boolean joinsACM; //是否参加过ACM比赛
创建一集合对象,如List,内有若干Student对象用于后面的测试。
4.1 使用传统方法编写一个方法,将id>10,name为zhang, age>20, gender为女,参加过ACM比赛的学生筛选出来,放入新的集合。在main中调用,然后输出结果。
初始化:
list.add(new Student(15L,"cheng",19,getGender(1),true));
list.add(new Student(20L,"li",20,getGender(1),false));
list.add(new Student(15L,"zhang",21,getGender(2),true));
list.add(new Student(2L,"cheng",25,getGender(2),false));
list.add(new Student(20L,"li",18,getGender(1),false));
结果截图:

4.2 使用java8中的stream(), filter(), collect()编写功能同4.1的函数,并测试。
功能实现:
list2=list.stream().filter(s->10<s.getId()).collect(Collectors.toList());
list2=list2.stream().filter(s->"zhang".equals(s.getName())).collect(Collectors.toList());
list2=list2.stream().filter(s->20<s.getAge()).collect(Collectors.toList());
list2=list2.stream().filter(s->getGender(2).equals(s.getGender())).collect(Collectors.toList());
list2=list2.stream().filter(s->s.isJoinsACM()==true).collect(Collectors.toList());
结果截图:

4.3 构建测试集合的时候,除了正常的Student对象,再往集合中添加一些null,然后重新改写4.2,使其不出现异常。
增加null:
list.add(null);
功能实现,增加排除null的情况:
list=list.stream().filter(s->s!=null).collect(Collectors.toList());
结果截图:

Q5.泛型类:GeneralStack(题目5-5)
5.1 截图你的提交结果(出现学号)

5.2 GeneralStack接口的代码
interface GeneralStack<T> {
T push(T item);
T pop();
T peek();
public boolean empty();
public int size();
}
5.3 结合本题,说明泛型有什么好处
好处:使用泛型可以不必直接决定类的类型,此题中对于Integer, Double, Car三个引用类型的栈,若不使用泛型接口则需要写三个不同类型的栈,若直接使用一个泛型接口,让Integer, Double, Car三个引用类型的栈都适用,则可以少写很多代码。
Q6.泛型方法
基础参考文件GenericMain,在此文件上进行修改。
6.1 编写方法max,该方法可以返回List中所有元素的最大值。List中的元素必须实现Comparable接口。编写的max方法需使得String max = max(strList)可以运行成功,其中strList为List类型。也能使得Integer maxInt = max(intList);运行成功,其中intList为List类型。
public class Max {
public static void main(String[] args) {
List<String> strList = new ArrayList<String>();
List<Integer> intList = new ArrayList<Integer>();
strList.add("a");
strList.add("b");
strList.add("e");
intList.add(2);
intList.add(4);
intList.add(6);
String max = max(strList);
Integer maxInt = max(intList);
System.out.println("max = " + max);
System.out.println("maxInt =" + maxInt);
}
public static <T extends Comparable<T>> T max(List<T> list) {
T max = list.get(0);
for(T i : list){
if(i.compareTo(max)>0)
max = i;
}
return max;
}
}

3.码云上代码提交记录及PTA实验总结
3.1码云代码提交记录

201521123027 <java程序设计>第八周学习总结的更多相关文章
- 201521123027 <java程序设计>第13周学习总结
1.本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2.书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu.e ...
- 201521123027 <java程序设计>第11周学习总结
1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2.书面作业 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了使用synchro ...
- 201521123027 <java程序设计>第七周学习总结
1.本周学习总结 2.书面作业 Q1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 答: 源代码: //contains()方法 public boolean c ...
- 201521123027 <java程序设计>第十周学习总结
1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 异常: 多线程: 2.书面作业 Q1.finally 题目4-2 1.1 截图你的提交结果(出现学号) 1.2 ...
- 201571030332 扎西平措 《面向对象程序设计Java》第八周学习总结
<面向对象程序设计Java>第八周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https: ...
- 201871010106-丁宣元 《面向对象程序设计(java)》第八周学习总结
201871010106-丁宣元 <面向对象程序设计(java)>第八周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nwn ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145236 《Java程序设计》第九周学习总结
20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...
随机推荐
- java多线程系列(七)---Callable、Future和FutureTask
Callable.Future和FutureTask 前言:如有不正确的地方,还望指正. 目录 认识cpu.核心与线程 java多线程系列(一)之java多线程技能 java多线程系列(二)之对象变量 ...
- Jsp分页的简单制作
Jsp分页的简单制作 运行环境:jsp+tomcat+eclipse 技术:servlet+jsp+mysql 分页技术还区分两个:假分页和真分页 假分页:一次性从数据库读出表的所有数据一次性的返回给 ...
- [stm32F429-DISCO-HAL] 1.先说说关于stm32Cube的一些事情。然后,Start with it...
目前,我觉得STM32CUBE最大的方便在于,可以使用STM32CubeMX软件来图形化配置外设.首先贴出官网的PDF,Getting started with STM32CubeF4 firmwar ...
- POSTMAN-REST Client
下载方式:翻.墙安装 #使用的时候不用翻.墙 下载地址:https://chrome.google.com/webstore/search/postman%20rest%20client Po ...
- 17个新手常见Python运行时错误
当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂.这里列出了常见的的一些让你程序 crash 的运行时错误. 1)忘记在 if , elif , else , for , ...
- js中callback.call()和callback()的区别
js中callback.call()和callback()的区别在js中callback.call()和callback() 有什么区别,举个例子:function a(){alert('hello! ...
- 《Java从入门到放弃》入门篇:hibernate查询——HQL
不知不觉又到了hibernate的最后一篇了,只感觉时光飞逝~,岁月如梭~! 转眼之间,我们就···························,好吧,想装个X,结果装不下去了,还是直接开始吧· ...
- C++中printf和scanf的用法
(一)printf的用法 printf:按格式打印,向控制台输出.print:打印 ,f:formate,格式化. 在使用printf向控制台输出时,不建议使用中文字符串,中文字符串的问题比较复杂,有 ...
- Python 接口:从协议到抽象基类
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica } 抽象基类的常见用途:实现接口时作为超类使用.然后,说明抽象基类如何检查 ...
- jsp 的四个作用域 :page、request、session和application的区别 (转)
1.简单说 page指当前页面.在一个jsp页面里有效 2.request 指从http请求到服务器处理结束,返回响应的整个过程.在这个过程中使用forward方式跳转多个jsp.在这些页面里你都可以 ...