1. 本周学习总结

2. 书面作业

1.List中指定元素的删除

1.1 实验总结

  • list中可以通过list.get(i)来获取具体第几个的元素的值,再通过compareTo来对比
  • 通过in.hasNext可以当作扫描器,以空格为分隔,切割各个元素,通过add分别输入到list中

2.统计文字中的单词数量并按出现次数排序(尽量不要出现代码)

2.1 伪代码(简单写出大体步骤)

  • 输入同5-2,不变
  • 相同的单词输入Map里
Map<String,Integer> coun =new TreeMap<String,Integer>();
if(set.contains(a))
{
if(coun.containsKey(a))
coun.put(a, coun.get(a)+1);
else
coun.put(a, 2);
}
set.add(a);
  • 因为排序要求有变,所以通过collection比较器来实现排序
List<Map.Entry<String,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(coun.entrySet());
Collections.sort(list,new Comparator<Map.Entry<String,Integer>>(){ @Override
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
return (o2.getValue() - o1.getValue());
} });

2.2 实验总结

  • Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引
  • 关于怎么使用,一般是选择Map的子类,而不直接用Map类。如:HashMap,TreeMap Map<String,Integer> coun =new HashMap<String,Integer>();
  • remove(Object key) 从map中删除键和关联的值
  • put(Object key,Object valus)将指定值与指定键相关联

2.3 截图你的提交结果(出现学号)

3.倒排索引(题目5-4)

3.1 伪代码(简单写出大体步骤)

	for(int i=0;i<arr.size();i++){
int b=i+1;//用来给行数加1,因为数组都是从0开始的,对行数不友好
map2.put(arr.get(i), i); //第几行的字符串全部加到map2中
//System.out.println(map2);
String[] s1=arr.get(i).split(" ");//把这一行的字符串按单词分开
for(int j=0;j<s1.length;j++){ //分开的一个个的单词
String str=s1[j];//str 代表这一个个的单词
if(!map3.containsKey(str)){//如果map3中没有这个单词
//value=map2.get(str);
String sss=String.valueOf(b);
map3.put(str, sss);//把这个单词加到map3里,value等于行数i
}
else{
value1=map3.get(str);//获取这个单词在map2中的行数
map3.put(str, value1+","+b);//放到map3里
//System.out.println(map3);
}
}
}//把各种值存到map里面。map2是存放每行的信息,map3是存放单词信息 for(Entry<String, String> a : map3.entrySet()){
System.out.println(a);
}

3.2 实验总结

  • 搞清楚每个map是干什么用的很重要,不然很容易混乱
  • 使用map.get(key)可以获取到key对应的value值,从而对这个值进行一些操作
  • ArrayList的get方法,可以获取动态数组的每个值,通过arr.get(i)遍历数组。

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中调用,然后输出结果。

Student a;
for(int i=0;i<6;i++)
{
a=list.get(i);//获取每一个Student的类的值
if(a.getId()>10&&a.getName().equals("zhang")&&a.getAge()>20&&a.getGender()==Gender.weman&&a.isJoinsACM())//进行筛选
list2.add(a);//符合条件的加到list2中
}

4.2 使用java8中的stream(), filter(), collect()编写功能同4.1的函数,并测试。

4.3 构建测试集合的时候,除了正常的Student对象,再往集合中添加一些null,然后重新改写4.2,使其不出现异常。

5.泛型类:GeneralStack(题目5-5)

5.1 GeneralStack接口的代码

interface GeneralStack<T>{
T push(T item);
T pop();
T peek();
public boolean empty();
public int size();
}
while(true){
String str=in.next();
if(str.equals("quit"))
break;
else
{
int m=in.nextInt();
int n=in.nextInt();
if(str.equals("Integer")){
System.out.println("Integer Test");
ArrayListGeneralStack stack=new ArrayListGeneralStack();
for(int i=0;i<m;i++){
int a=in.nextInt();
stack.push(a);
System.out.println("Push:"+stack.peek());
}
for(int j=0;j<n;j++){
Integer b=(Integer) stack.pop();
System.out.println("Pop:"+b);
}
stack.toString();
int a=0;
for(int i=0;i<=stack.size()+1;i++){
if(!stack.empty()){
Integer b=(Integer) stack.pop();
a=a+b;
}
}
System.out.println("sum="+a);
System.out.println(stack.getClass().getInterfaces()[0]);
}
if(str.equals("Double")){
System.out.println("Double Test");
ArrayListGeneralStack stack=new ArrayListGeneralStack();
for(int i=0;i<m;i++){
Double a=in.nextDouble();
stack.push(a);
System.out.println("Push:"+stack.peek());
}
for(int j=0;j<n;j++){
System.out.println("Pop:"+stack.peek());
stack.pop();
}
stack.toString();
Double a=0.0;
for(int i=0;i<=stack.size()+1;i++){
if(!stack.empty()){
Double b=(Double) stack.pop();
a=a+b;
}
}
System.out.println("sum="+a);
System.out.println(stack.getClass().getInterfaces()[0]);
}
if(str.equals("Car")){
System.out.println("Car Test");
ArrayListGeneralStack stack=new ArrayListGeneralStack();
for(int i=0;i<m;i++){
Car a = new Car(in.nextInt(),in.next());
stack.push(a);
System.out.println("Push:"+stack.peek());
}
for(int j=0;j<n;j++){
Car b=(Car) stack.peek();
stack.pop();
System.out.println("Pop:"+b);
}
stack.toString();
for(int i=0;i<stack.size();i++){
if(!stack.empty()){
Car b=(Car) stack.pop();
String name=b.getMame();
System.out.println(name);
}
}
System.out.println(stack.getClass().getInterfaces()[0]);
}
}
}

5.2 结合本题,说明泛型有什么好处

  • Java 泛型的参数只可以代表类,不能代表个别对象
  • 下两种形式(假设 T 是泛型的类型参数,C 是一般类、泛类,或是泛型的类型参数):T 实现接口 I 。T 是 C ,或继承自 C 。一个泛型类不能实现Throwable接口。这里使用的是T.

5.3 截图你的提交结果(出现学号)

6.泛型方法

6.1 编写方法max,该方法可以返回List中所有元素的最大值。List中的元素必须实现Comparable接口。编写的max方法需使得String max = max(strList)可以运行成功,其中strList为List类型。

6.2 编写方法max1,基本功能同6.1,但让其所返回的值可以赋予其父类型变量。如有User类,其子类为StuUser,且均实现了Comparable接口。编写max1使得User user = max1(stuList);可以运行成功,其中stuList为List类型。也可使得Object user = max(stuList)运行成功。

3. 码云上代码提交记录

Java 第八周总结的更多相关文章

  1. 20165210 Java第八周学习总结

    20165210 Java第八周学习总结 教材内容学习 - 第十二章学习总结 进程与线程 操作系统与进程 Java中的线程 Java的多线程机制 主线程 线程的状态与生命周期 1. 新建 2. 运行 ...

  2. 20145304 Java第八周学习报告

    20145304<Java程序设计>第八周学习总结 教材学习内容总结 NIO NIO使用频道来衔接数据节点,在处理数据时,NIO可以让你设定缓冲区容量,在缓冲区中对感兴趣的数据区块进行标记 ...

  3. JAVA 第八周学习总结

    20175308 2018-2019-2 <Java程序设计>第八周学习总结 教材学习内容总结 泛型 泛型的主要目的是可以建立具有类型安全的集合框架(如链表.散列映射等数据结构) 通过cl ...

  4. 20165326 java第八周学习笔记

    第八周学习笔记 知识点总结 1.进程与线程 进程:程序的一次动态执行过程 区别:进程和线程的区别? 进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元 同一个进程中可以包括多个线程,并 ...

  5. Java第八周学习总结

    20145113第八周学习总结 第十五章学习内容 第15章比较琐碎,相对于之前章节也比较枯燥无味看了一部分,也动手敲了些 Logger logger = Logger.getLogger(" ...

  6. 2017-2018-1 我爱学Java 第八周 作业

    团队六七周作业 团队分工 UML图 工具选择 小编(金立清)有话说 参考资料 团队分工 返回目录 UML图 用例图 类图 活动图 状态图 返回目录 工具选择 ProcessOn - 免费在线作图,实时 ...

  7. java第八周课后作业

    1.系统小练习 package homework; import java.util.Random; import java.util.Scanner; public class Menu { pub ...

  8. 201521123093 java 第八周总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1.2 选做:收集你认为有用的代码片段 1.泛型简介:同一个代码可以被不同的对象重用 2.使用泛型的好处:允许 ...

  9. java第八周作业

    分析代码: public final class LineItemKey implements Serializable { private Integer customerOrder; privat ...

随机推荐

  1. "=="和equals方法究竟有什么区别?

    (单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则很难说清楚) ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同, ...

  2. 7种方法解决移动端Retina屏幕1px边框问题

    在Reina(视网膜)屏幕的手机上,使用CSS设置的1px的边框实际会比视觉稿粗很多.在之前的项目中,UI告诉我说我们移动项目中的边框全部都变粗了,UI把他的设计稿跟我的屏幕截图跟我看,居然真的不一样 ...

  3. [Poi2010]Monotonicity 2 线段树

    这道题考试的时候先打了个dfs暴力.又打了个O(n²)的动规.然后竟然心血来潮拍了一下..明明知道过不去的...然后水了50分(20个测试点这么多啊啊啊啊). 因为它已经提前给你如果长度为i时下一位的 ...

  4. 优秀开源软件学习系列(一)——从零学习Spring4以及学习方法分享

    一.目的1.掌握Spring4怎样使用,以便将这个框架作为自己的一项技能.2.掌握Spring官网是怎样介绍其产品的,在心中对Spring有最官方的.最直观的了解.在Spring的相关领域,能够知道怎 ...

  5. 一个项目经理对主流项目管理工具的对比:禅道VS华为软件开发云

    禅道与软件开发云对比分析报告 1. 产品介绍 禅道是易软天创出品的一款项目管理软件,集产品管理.项目管理.测试管理.文档管理.组织管理于一体,覆盖了项目管理和测试管理的核心流程. 华为软件开发云 (D ...

  6. yum和apt-get的区别

    一般来说著名的linux系统基本上分两大类: 1.RedHat系列:Redhat.Centos.Fedora等  2.Debian系列:Debian.Ubuntu等  RedHat 系列  1 常见的 ...

  7. C# 实例练习(第二天)

    实例练习 1. 完成简单登录效果,设置用户登录账号密码,清空控制台,进入登录页面,请求用户输入账号.密码和验证码(随机产生),并判断用户输入的信息,给出相应的提示. C#代码如下: 主要知识点: (1 ...

  8. JAVA中反射机制一

    反射一 基本概念 一.反射机制的基本概念 什么是反射?反射是指在运行状态中,对于任意一个类,都可以获取到这个类的所有属性和方法:对于任意一个对象,都能够调用这个对象的任意方法和属性:这种动态获取信息及 ...

  9. TP-Link路由器的设置

    TP-Link路由器的设置.. 路由器中TP-Link是公认比较好用的品牌. 将TP-Link路由器的Lan与电脑连接.拔掉Wan口上的线. 注:tplink的路由器默认IP基本都是192.168.1 ...

  10. 【JavaScript】Js控制页面所有元素只读

    在页面初始化加载以下readOnlyPage()方法,可实现所有元素只读,方便实用. <script language="javascript"> function r ...