码迷,mamicode.com
首页 > 编程语言 > 详细

Java第十周的作业

时间:2017-11-18 21:53:53      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:arch   单词   --   复数   java8   if判断   als   项目   比较   

1.本周学习总结

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

2.书面作业

本次作业题集 集合

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

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

  • convertStringToList(String line)方法中,通过split(" +")方法来按照一个或者多个空格进行字符串的数组划分,在新建一个list,将数据通过add导入,最后return list
  • remove方法中,要调用到ArrayList中的remove方法,先通过for循环遍历输入的list,再用if语句判断list中是否存在输入的字符串str,如果存在则list.remove()之后要加一个i--否则会出现隔一个遍历一个的情况。

    2.2. 统计文字中的单词数量并按出现次数排序(题集题目)

    2.2.1伪代码(不得复制代码,否则扣分)

Map<String,Integer> map = new HashMap<String,Integer>()
while(系统有下一个输入)
    String line = sc.nextLine()
    if(line等于!!!!!)
        break
    lineScanner = new Scanner(line)
    while(lineScanner存在下一输入)
        读入键str
        if(map存在键str)
        map.put(str,map.get(str)+1)
        else
        map.put键对应的值为1
    List<Entry<String,Integer>> list =new ArrayList<Entry<String,Integer>>
    Collentions.sort(list,new Comparator<Map.Entry<String,Integer>>){
    if(getValue相同)
    用compareTo比较Key1和Key2
    else
    返回getValue2-getValue1
}       

2.2.2 实验总结

  • 将输入的单词处理后存入到map中,先通过map.containsKey(str)判断map中是否有这个单词,如果有就直接将对应单词的值Value+1,如果没有就添加这个词,再将其Vlaue置1
  • 用到Scanner lineScanner = new Scanner(line)while(lineScanner.hasNext()),String str = lineScanner.next()来调用输入的值
  • 覆写Collect.sort()的排序方法

    2.3. 倒排索引(题集题目)

    本题较难,做不出来不要紧。但一定要有自己的思考过程,要有提交结果。

    2.3.1 截图你的代码运行结果

    技术分享图片

2.3.2 伪代码(不得复制代码,否则扣分)

while(判断输入条件是否满足!!!!!)
split拆分字符串
for(循环String数组)
if判断map中是否存在当前单词
{map.put(words[i],arrlist)}
else
{
    map.get(words[i])
    if判断取出的arraylist是否存在重复数据(行数)同一行的数据{不存在->map.put}
}
查找元素部分:
while循环下
if判断map中是否存在单词
{
    if(列表a是否为空)
        map.get(data[j])
    else输入的单词不止一个
    {
        b=map.get(data[j])
        for 循环a列表的元素个数的次数
        {if  b中不存在a中元素,则删除a中的该元素}
        if{a.isEmpty()}
            输出未找到结果
   }
}

2.3.3 实验总结

  • 通过新建TreeMap来满足输出时的格式要求,因此String为键型,ArrayList<Integer>为值型
  • 新建一个int indext来表示行数,通过while循环判断输入的字符串是否为!!!!!
  • split方法将字符串分为String数组,调用for循环比较,如果map中没有当前单词,就新建一个arraylist将当前行数add到其中,再map.put将值的集合添加到键中。反之,如果存在,就要map.get获取当前单词所对应的值的集合,再判断当前集合中是否存在index,以此来判断同一行是否出现过相同的单词,如果没有,就执行添加行数和map.put操作
  • 通过List<Entry<String,ArrayList<Integer>>> list=new ArrayList<Entry<String,ArrayList<Integer>>>(map.entrySet())转换类型,再通过for循环输出。
  • while循环下,新建两个ArrayList,a和b。对输入的字符串进行数组拆分后,调用for循环,再通过if判断map中是否存在该单词,存在的话判断a是否为空,如果为空就获取当前单词对应的列表list,反之意味着就是这一行有第二个单词了,把第二个单词存在的list给b,通过for循环运行a的行数的次数,用if判断ab中相同的行数,如果b中不存在a的第t个元素的话,就是在a中删除当前t对应的行数。如果a被删成空表,就输出found 0 results

    2.4.Stream与Lambda

    编写一个Student类,属性为:
    private Long id; private String name; private int age; private Gender gender;//枚举类型 private boolean joinsACM; //是否参加过ACM比赛
    创建一集合对象,如List

    2.4.1 使用传统方法编写一个搜索方法List<Student> search(List<Student> stuList, Long id, String name, int age, Gender gender, boolean joinsACM),然后调用该方法将id>某个值,name为某个值, age>某个值, gender为某个值,参加过ACM比赛的学生筛选出来,放入新的集合。在main中调用,然后输出结果。(截图:出现学号、姓名)

  • 输出的是学号大于输入id,性别为男,名字为suwl,年龄大于15,参加过ACM的人。
    技术分享图片

2.4.2使用java8中的stream(), filter(), collect()编写功能同4.1的代码,并测试(要出现测试数据)。构建测试集合的时候,除了正常的Student对象,再往集合中添加一些null,你编写的方法应该能处理这些null而不是抛出异常。(截图:出现学号)

2.5. 泛型类:GeneralStack

题集jmu-Java-05-集合之GeneralStack

2.5.1GeneralStack接口的代码

2.5.2 结合本题与以前作业中的ArrayListIntegerStack相比,说明泛型有什么好处

3.码云及PTA

题目集:jmu-Java-05-集合

3.1 码云代码提交记录

  • 在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

3.2 截图PTA题集完成情况图

需要有两张图(1. 排名图。2.PTA提交列表图

3.3 统计本周完成的代码量

需要将每周的代码统计情况融合到一张表中。

周次 总代码量 新增代码量 总文件数 新增文件数
1 120 120 2 2
2 280 160 5 3
3 590 310 10 5
4 780 190 12 2
5 1290 510 17 5
6 1710 420 20 3
7 2513 803 24 4
8 2513 0 24 0
9 3014 501 27 3

3.4评估自己对Java的理解程度

尝试从以下几个维度评估自己对Java的理解程度

Java第十周的作业

标签:arch   单词   --   复数   java8   if判断   als   项目   比较   

原文地址:http://www.cnblogs.com/suwl/p/7857873.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!