201521123105 第8周Java学习总结
1.本周学习总结
1.1思维导图
2. 书面作业
本次作业题集集合
1.List中指定元素的删除(题目4-1)
1.1 实验总结
1.删除元素的时候从最后一个元素开始,避免删除元素后位置发生变化而导致有些元素没有删除;2.通过equals方法以及list.remove的方法连用实现list中移除掉以与str内容相同的元素的函数。
2.统计文字中的单词数量并按出现次数排序(题目5-3)
2.1 伪代码(简单写出大体步骤)
1.建立Map(key,value),key类型String,value类型Integer 2.输入文本, str=in.next() 3.比较,若是出现过key,value+1,否则加入单词,次数=1 4.将map对象转化为list对象; 5.用Collections.sort对list进行排序,输出;
2.2 实验总结
1.map.entrySet()方法:用于获得存储在Map中所有映射的Set集合;2.泛型的使用
3.倒排索引(题目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中最难的一题,若让我独立完成,我认为我做不出来,这一题是参考了同学的代码以及同学的讲解,但是还没有完完全全掌握,还需要再琢磨、修改。
4.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());
5.泛型类:GeneralStack(题目5-5)
5.1 截图你的提交结果(出现学号)
5.2 GeneralStack接口的代码
interface GeneralStack<T>{
public T push(T item);
public T peek();
public boolean empty();
public int size();
}
5.3 结合本题,说明泛型有什么好处
1.提高了JAVA程序的类型安全,在编译时期就避免了程序本可能在程序运行时期发生的错误;2.消除了强制类型转换;3.泛型能够代替Object类型的参数和变量的使用,增强代码的可读性
6.泛型方法
基础参考文件GenericMain,在此文件上进行修改。
6.1 编写方法max,该方法可以返回List中所有元素的最大值。List中的元素必须实现Comparable接口。编写的max方法需使得String max = max(strList)可以运行成功,其中strList为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. 码云代码提交记录
201521123105 第8周Java学习总结的更多相关文章
- 201521123105 第七周Java学习总结
1. 本周学习总结 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 以下是ArrayList的contains源代码: public boole ...
- 201521123105 第三周Java学习总结
1. 本周学习总结 对象(实际个体) 对象与类 类(模板) 2.书面作业 1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private ...
- 201521123105 第11周Java学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1. 互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) ...
- 201521123105 第10周Java学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题集异常.多线程 1.finally 题目4-21.1 截图你的提交结果(出现 ...
- 201521123105 第六周Java学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 2. 书面作业 1.clone方法1.1 Object对象 ...
- 201521123105 第9周Java学习总结
1. 本周学习总结 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何避 ...
- 20165236 第六周Java学习总结
20165236 第六周Java学习总结 一. 第八章内容: 1.String 类: String对象.常量对象:字符串并置: 常用方法: length,equals,startsWith,compa ...
- 第五周Java学习总结(补)
第五周java学习内容(补) 学习内容: File类方法的操作 public String getName() public boolean canRead() public boolean canW ...
- 20165203《Java程序设计》第七周Java学习总结
20165203<Java程序设计>第七周Java学习总结 教材学习内容总结 第11章 JDBC与MySQL数据库 MySQL数据库管理系统 MySQL数据库管理系统,简称MySQL,是世 ...
随机推荐
- 用ubuntu的grpb2引导Remix OS
Remix OS游戏版,这里下载:http://youxi.jide.com/ 安装简单.我这里要解决的是安装后用ubunu的grub2菜单去引导它. 方法如下: 进入ubuntu系统里修改其grub ...
- Markdown常用编辑器
插入图片功能对比 Cmd Markdown只支持通过输入图片在线URL的方式来插入图片,不能上传本地图片. CSDN Markdown.MarkdownPad既支持插入本地图片,也支持插入网上在线图片 ...
- Ubuntu 16.04 + CUDA 8.0 + cuDNN v5.1 + TensorFlow(GPU support)安装配置详解
随着图像识别和深度学习领域的迅猛发展,GPU时代即将来临.由于GPU处理深度学习算法的高效性,使得配置一台搭载有GPU的服务器变得尤为必要. 本文主要介绍在Ubuntu 16.04环境下如何配置Ten ...
- MySQL用户和系统变量
--MySQL用户和系统变量 -----------------------------2014/05/19 用户变量 可以先在用户变量中保存值然后在以后引用它:这样可以将值从一个语句传递到另一个语句 ...
- Oracle进阶研究问题收集
1. buffer busy waits http://www.itpub.net/thread-1801066-1-4.html 2. 深入理解oracle log buffer http://ww ...
- Python 第七天
OOP 面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.在Python中,所有数据类型都可以视为对象,当然也可以自定义对象.自定义的对象数据类型 ...
- HoloLens开发与性能优化实践
HoloLens中国版终于于5月底在中国上市,同时国内的技术社区经过一年的成长也有了很大的扩张,越来越多的开发者开始进入了HoloLens开发领域,尝试着使用混合现实(Mixed Reality)技术 ...
- /etc/profile /etc/bashrc ~/.bash_profile ~/.bashrc ~/.bash_logout 说明及区别
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置. /etc/bashrc:为每一 ...
- 斜率DP hdu 3507
Problem Description Zero has an old printer that doesn't work well sometimes. As it is antique, he s ...
- TF-IDF模型详解
1. 理论基础 由于数据挖掘所有数据都要以数字形式存在,而文本是以字符串形式存在.所以进行文本挖掘时需要先对字符串进行数字化,从而能够进行计算.TF-IDF就是这样一种技术,能够将字符串转换为数字,从 ...