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

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

1. 本周学习总结

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

答:

2. 书面作业

本次作业题集集合

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

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

答:

  • 实验总结:在public static List
  • 删除元素的方法:

    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

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

4.1 使用传统方法编写一个搜索方法List

答:搜索方法如下:

运行结果如下:

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

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
时间: 2024-10-06 03:34:26

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

《Java程序设计》第一次作业:源代码计算器

目的: (1)一门语言入门,需要编写至少2万行代码.那么,我们编写一个计算代码行数的程序,激励自己前行. (2)了解代码复用.重构的作用. 目标(递进关系,难度从小到大): 目标1:给定一个源代码文件(.cs, .java),输出该文件的总行数.空行数.注释行数.代码行数. 目标2:从命令行输入一个参数(指定目录或文件),输出该目录下指定类型文件(.cs, .java)的个数.每个文件的总行数.空行数.注释行数.代码行数. 目标3:从命令行输入两个参数(第一个参数:指定目录或文件:第二个参数:指

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

一.学习内容      本次课我们重点学习了怎样向函数传递数组,鉴于大家对函数和数组的理解和运用还存在一些问题,下面通过一些实例加以说明,希望同学们能够认真阅读和理解.      例1:火柴棍拼数字     要用火柴棍拼出0-9之间的数字,输入任意一个数字,输出需要多少根火柴棍.用火柴棍拼数字0-9的拼法如图所示:  对于这道题,我们学过分支结构后,就可以编程实现.代码如下:      #include <stdio.h> int main() { int digit,count; print

大数据Java基础第九天作业

第一题: /**  * 1.盒子最大容量120g,(当前蜂蜜量 >= 最大容量时,则蜜蜂不往里倒蜂蜜,发送通知,在消息队列等待)  * 2.小熊每一次吃50g,(当盒子蜂蜜量 < 50则不吃,发送通知,在消息队列等待)  * 3.蜜蜂自己的口袋最大量80g,蜜蜂每1s生产6g蜂蜜,当口袋容量 >= 50g时则把所有容量倒入小熊的盒子.  */ //蜜蜂类 class Bee extends Thread{     public static final int BAG_MAX = 80;

《Java语言程序设计》大作业报告 九宫格游戏

    <Java语言程序设计>大作业报告     中国石油大学(北京)2015 - 2016 学年第二学期     班级:_____计算机14-1_______ 姓名:_____  许 恺_________________ 学号:______2014011329___________     题意分析 程序首先需要九个可以移动的格子,大小相等,有字符串标示,其次要可以相应鼠标和键盘方向键的控制,可以自由移动,并且与此同时记录步数,最后在满足条件时弹出对话框并显示步数以及是否打破记录,关于打破

20155335 俞昆 2016-2017-2 《Java程序设计》第九周学习总结

学号 2016-2017-2 <Java程序设计>第九周学习总结 ##JDBC入门 在正式介绍JDBC前,已知JDBC是用来执行SQL的解决方案,开发人员使用JDBC的标准接口,开发人员不需接触底层数据库驱动程序的差异性. 本章,我们需要了解JDBC与API使用和概念,我们先要认识应用程序如何与数据库进行沟通,数据库本身是一种独立运行的应用程旭,程序员撰写的应用程序是利用通信协议对数据库进行指令交换,以进行数据的增加删除以及查找. 通常应用程序会利用一组专门与数据库进行通信协议的链接库,以简化

20145311 《Java程序设计》第九周学习总结

20145311 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 16.1JDBC 16.1.1JDBC简介 JDBC(Java DataBase Connectivity)是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操作,开发人员无须接触底层数据库驱动程序的差异性. 厂商在操作JDBC驱动程序时,依方式可将驱动程序分为4种类型: ·Type 1:JDBC-ODBC Bridge Driver·Type 2:Native API

week10《java程序设计》作业总结

week10<java程序设计>作业总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 答:: 2. 书面作业 本次PTA作业题集异常 1. 常用异常 结合题集题目7-1回答 1.1 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何避免? 答: 经常出现的异常有: 输入类型不符NumberFormatException,数组越界ArrayIndexOutOfBoundsException,空指针NullPointerException ,

Week12《java程序设计》第12次作业总结

Week12<java程序设计>第12次作业总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 面向系统综合设计-图书馆管理系统或购物车 使用流与文件改造你的图书馆管理系统或购物车. 2.1 简述如何使用流与文件改造你的系统.文件中数据的格式如何? 答:在注册登录模块中,在用户仓库中无法找到的用户,使用对象流和缓冲流查找对应文件是否存在,不存在就进行注册.从文件中读取影虎的登录信息.登录成功后,使用组合过滤流读取用户的书库信息. 2.2 简述系

week13《java程序设计》第13次作业总结

week13<java程序设计>第13次作业总结 1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 答: 1.IP与端口:ip和域名相对应,可找到主机.IP+端口(TCP/IP协议中的端口)找到主机上的对应程序. web服务:80 ftp服务:21 Telnet服务:23 2.套接字通信:实现客户端和服务器端的连接. 对从Socket对象中获得的流操作,即可进行网络通信. 建立Socket对象,从Scoket对象上获取流. 对流操作进行网络通信 关闭