Java201521123071《Java程序设计》第八周学习总结
第八周-集合与泛型
1. 本周学习总结
1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。
1. <T extends Comparable>表示T是绑定类型(Comparable)的子类型。可以有多个绑定类型,如:<T extends Comparable & Serializable>
2. 虚拟机内没有泛型类型信息,所有的对象都属于普通类!实际上泛型类就是一个普通类!!!类型擦除:清除类型参数信息,如将T替换为Object。T相当于无限定类型变量。
3. 原始类型定义:没有任何类型参数的泛型接口或泛型类。实际上,对同一泛型类,给定不同的参数类型,只存在一个原始类型。
4. 不能使用基本类型,要使用包装类型替换基本类型。如:不能用Pair<double>, 只能Pair<Double>
5. Pair<? extends Employee>这里的Pair声明,它的类型参数是 Employee或者其子类
2. 书面作业
1. List中指定元素的删除(题集jmu-Java-05-集合之4-1)
1.1 实验总结
在convertStringToList()中,我也是才知道in.next()可以是“下一个”,之前分割字符串的时候我还一直用的split().还有就是这样的分函数操作,比较方便数据类型转换。
1.2 截图你的提交结果(出现学号)

2. 统计文字中的单词数量并按出现次数排序(尽量不要出现代码,题集jmu-Java-05-集合之5-3)
2.1 伪代码(简单写出大体步骤)
System.out.println(map.size());
list = map.entrySet();
Collections.sort(list, compare);
public int compare(left, right){
return (right.getValue()-left.getValue());
}
for (int i = 0; i < 10; i++)
System.out.println(list.toArray()[i]);
2.2 实验总结
这个实验上周就已经开始做了,但是那时候可能刚开始接触Entry,所以有点蒙,脑子转不过来,其实上周的时候已经基本总结完了,那时候也基本写出来了,就是搞错了那个compare的顺序,所以输出的结果才会很奇怪。
2.3 截图你的提交结果(出现学号)

3. 倒排索引(尽量不要出现代码,题集jmu-Java-05-集合之5-4)
3.1 伪代码(简单写出大体步骤)
while(in.next()){
for (String str : st) {
if(map.containsKey(str)){
keys.add(line);//记录第几行
map.put(str, keys);//存到map
}
else {
key = new List;
key.add(line);//记录行数
map.put(str, key); //存到map
}
}line++;
}
System.out.println(map.get(index));
.....//后面的还想不到,不知道怎么写
3.2 实验总结
大概想法是说,给页码(索引值)建一个Arraylist收集,然后用map装关键字和索引值,通过line++实现行数统计,然后是根据索引值找到对应每个关键字,应该需要排序?或者说通过某种方法找到他们输出顺序?然后输出每行的文本信息,如果关键字找不到就输出“found 0 results”。
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中调用,然后输出结果。
public static List<Student> StuTest(List<Student> student){
List<Student> student0 = new ArrayList<Student>();
for (Student stu : student) {
if (stu.getId() > 10 && stu.getName().equals("zhang")&& stu.getAge() > 20 && stu.getGender().equals(Gender.Women)&&stu.isJoinsACM()) {
student0.add(stu);
}
}
return student0;
}
4.2 使用java8中的stream(), filter(), collect()编写功能同4.1的函数,并测试。
public static List<Student> StuTest0(List<Student> student){
List<Student> student0 = (ArrayList<Student>) student.parallelStream()
.filter(stu -> (stu.getId() > 10 && stu.getName().equals("zhang")
&& stu.getAge() > 20 &&
stu.getGender().equals(Gender.Women)
&& stu.isJoinsACM()))
.collect(Collectors.toList());
return student0;
}
}//本来不是很会,后来参考了一下其他同学的...
4.3 构建测试集合的时候,除了正常的Student对象,再往集合中添加一些null,然后重新改写4.2,使其不出现异常。
public static List<Student> StuTest0(List<Student> student){
List<Student> student0 = (ArrayList<Student>) student.parallelStream()
.filter(stu -> (stu.getId() > 10 && stu.getName().equals("zhang")
&& stu.getAge() > 20 &&
stu.getGender().equals(Gender.Women)
&& stu.isJoinsACM()) &&(stu != null))
.collect(Collectors.toList());
return student0;
}
}
5. 泛型类:GeneralStack(题集jmu-Java-05-集合之5-5 GeneralStack)
5.1 GeneralStack接口的代码
interface GeneralStack<T>{
public T push(T item);
public T pop();
public T peek();
public boolean empty();
public int size();
}
5.2 结合本题,说明泛型有什么好处
泛型的存在有点像接口,接口可以被不同的类操作,而因为泛型,我可以向不同的类,接口等等传输不同类型的对象,正如这道题一样,通过泛型,我向“实现类”传输不同类型的对象(Integer,double,Car)实现相同的功能。
5.3 截图你的提交结果(出现学号)

6. 泛型方法(基础参考文件GenericMain,在此文件上进行修改。)
6.1 编写方法max,该方法可以返回List中所有元素的最大值。List中的元素必须实现Comparable接口。编写的max方法需使得String max = max(strList)可以运行成功,其中 strList为List类型。
public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> list) {
return Collections.max(list);
}
6.2 编写方法max1,基本功能同6.1,但让其所返回的值可以赋予其父类型变量。如有User类,其子类为StuUser,且均实现了Comparable接口。编写max1使得User user = max1(stuList);可以运行成功,其中stuList为List类型。也可使得Object user = max(stuList)运行成功。
public static <T> T max1(Collection<? extends T> list,Comparator<? super T> com) {
return Collections.max(list, com);
}
由以上两个实验总结:之前查书就知道了Collection有这个方法可以直接得到最大值,还有就是泛型里的几个用法:<? extends T>,<? super T>,&
3. 码云上代码提交记录及PTA实验总结
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

Java201521123071《Java程序设计》第八周学习总结的更多相关文章
- 201521123027 <java程序设计>第八周学习总结
1.本周学习总结 1.1思维导图 2.书面作业 Q1.List中指定元素的删除(题目4-1) 1.1 实验总结 总结:判断List中是否存在指定元素,需要用到equals方法,若存在就用remove进 ...
- 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 ...
- 20155303 2016-2017-2 《Java程序设计》第二周学习总结
20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...
- 20145237 《Java程序设计》第九周学习总结
20145237 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令 ...
- 20175209 《Java程序设计》第九周学习总结
20175209 <Java程序设计>第九周学习总结 一.教材知识点总结 有关数据库下载中存在可能出现的问题已经在博客<数据库安装和使用过程中出现的一些问题>给出了相应的解决办 ...
- 20175317 《Java程序设计》第九周学习总结
20175317 <Java程序设计>第九周学习总结 学前准备 首先下载XAMPP,下载完成后打开: 将前两个选项打开 在IDEA中配置驱动mysql-connector-java-5.1 ...
随机推荐
- Entity Framework Core 2.0 新特性
本文翻译来自:https://docs.microsoft.com/en-us/ef/core/what-is-new/index 一.模型级查询过滤器(Model-level query filte ...
- chrome地址栏命令
Chrome作为一个前端开发的标准浏览器,用来体验和测试日新月异的新特性,自然是没话说. 有些新特性是需要特意开启设置的,有很多浏览器的内置功能也是要通过命令来开启或者使用的. Chrome 有很多的 ...
- Linux IP_FORWARD说明
--Linux IP_FORWARD说明 -----------------------------2014/03/01 ip地址分公有地址和私有地址,public address是由INIC(int ...
- Python 第五天
函数式编程 高阶函数 1.变量可指向函数 func = abs print(func(-1)) #1 2.函数可以作为参数传入另外的函数这也就是高阶函数 def add(x,y,func): prin ...
- webgl自学笔记——矩阵变换
这章主要探讨矩阵,这些矩阵代表了应用在我们场景上的变换,允许我们移动物体.然而在webGL api中并没有一个专门的camera对象,只有矩阵.好消息是使用矩阵来取代相机对象能让webgl在很多复杂动 ...
- iOS的消息转发机制详解
iOS开发过程中,有一类的错误会经常遇到,就是找不到所调用的方法,当然这类问题比较好解决,给当前对象或其父类对象添加该方法即可,使得编译器在编译时能正确找到该方法:或者,还有另外的方法,由于Objec ...
- 自定义类似于Jquery UI Selectable 的Vue指令v-selectable
话不多说,先看效果. 其实就是一个可以按住鼠标进行一个区域内条目选择的功能,相信用过Jquery UI 的都知道这是selectable的功能,然而我们如果用Vue开发的话没有类似的插件,当然你仍然可 ...
- Openfire服务器和Spark客户端配置
一.Openfire服务器的配置 关于之前一直在进行的聊天app的项目,我们还没有完成,这次我们介绍一下,Openfire服务器的配置. 1.Openfire下载 Openfire下载地址:http: ...
- 如何用CSS和jQuery实现一个侧滑导航菜单
为了建立导航菜单,让我们先看看html结构:<!DOCTYPE html><html lang="en"><head> <meta cha ...
- Run Performance Testing Which Was Distributed To Multiple Test Agents
How to solve the VS installed machine cannot run performance testing by .testsettings file, which wi ...