博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
201621123075 week8-集合
阅读量:7223 次
发布时间:2019-06-29

本文共 2130 字,大约阅读时间需要 7 分钟。

1. 本周学习总结

以你喜欢的方式(思维导图或其他)归纳总结集合相关内容。1120964-20171109165123950-1246429347.png

2. 书面作业

1. ArrayList代码分析

1.1 解释ArrayListcontains源代码

1120964-20171109172155731-1245860574.png

indexOf中对对象进行比较,如果相同返回1,不同返回-1.然后contains调用indexOf,如果相同返回true,不同返回false。

1.2 解释E remove(int index)源代码
1120964-20171109222148294-1948016363.png
将index位置上的元素进行删除后,并返回原来位置上元素的值
1.3 结合1.1与1.2,回答ArrayList存储数据时需要考虑元素的具体类型吗?

  • 需要考虑元素的具体类型
  • 比如1.2中假如储存的是int型的数据,有时候remove(i)的时候就可能出错
    1120964-20171109223455778-1864750905.png
    这里对传入的值有一个元素的删除

1.4 分析add源代码,回答当内部数组容量不够时,怎么办?

1120964-20171109224152216-1612097766.png
add中先对数组长度加1,再做添加的操作
1.5 分析private void rangeCheck(int index)源代码,为什么该方法应该声明为private而不声明为public?
1120964-20171109224541528-409597283.png
1120964-20171109224713966-97003217.png
这个函数是为了检查是否越界,只要自己使用就可以了

2. HashSet原理

2.1 将元素加入HashSet(散列集)中,其存储位置如何确定?需要调用那些方法?

Hash会调用hashCode()方法获得一个值,然后根据这个值获得存储位置。
2.2 将元素加入HashSet中的时间复杂度是多少?是O(n)吗?(n为HashSet中已有元素个数)
感觉是O(n),因为对之前的值判断比较n次。
2.3 选做:尝试分析HashSet源代码后,重新解释2.1

3. ArrayListIntegerStack

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

3.1 比较自己写的ArrayListIntegerStack与自己在题集jmu-Java-04-面向对象2-进阶-多态、接口与内部类中的题目自定义接口ArrayIntegerStack,有什么不同?(不要出现大段代码)
ArrayintegerStack:
1120964-20171110165520591-1875335611.png
ArrayListinttegerStack:
1120964-20171110170341856-1525786815.png
1120964-20171110170423028-1683200363.png

  • 一个使用数组,一个用ArrayList。数组限制了它的大小,而ArrayList是动态的,add方法中可以扩大它的容量
    3.2 结合该题简单描述接口的好处,需以3.1为例详细说明,不可泛泛而谈。
  • 去实现接口的方法是多样的,像ArrayListtegerstack和ArrayintegerStack虽然用的方法不一样,可是结果实现的功能也是同样的

    4. Stack and Queue

4.1 编写函数判断一个给定字符串是否是回文,一定要使用栈(请利用Java集合中已有的类),但不能使用java的Stack类(具体原因自己搜索)与数组。请粘贴你的代码,类名为Main你的学号。

1120964-20171110195729106-769745973.png

4.2 题集jmu-Java-05-集合之银行业务队列简单模拟(只粘贴关键代码)。请务必使用Queue接口,并说明你使用了Queue接口的哪一个实现类?

1120964-20171110203707138-1594068787.png
1120964-20171110203811231-2115948084.png
采用ArrayDeque实现类

5. 统计文字中的单词数量并按单词的字母顺序排序后输出

题集jmu-Java-05-集合之5-2 统计文字中的单词数量并按单词的字母顺序排序后输出 (作业中不要出现大段代码)

5.1 实验总结
可以用TreeSet去做它的排序,但是一开始我放错了感叹号个数然后就一直出错,并且没有把!!!!!也算进去
1120964-20171110212135153-2139420218.png

6. 选做:统计文字中的单词数量并按出现次数排序

题集jmu-Java-05-集合之5-3 统计文字中的单词数量并按出现次数排序(不要出现大段代码)

6.1 伪代码
6.2 实验总结

7. 选做 面向对象设计大作业-改进

7.1 使用集合类改进大作业或者简述你的面向对象设计大作业中,哪里使用到了集合类。

7.2 进一步完善图形界面(仅需出现改进的后的图形界面截图)
参考资料:

JTable参考项目

3.码云及PTA

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

3.1. 码云代码提交记录

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

1120964-20171110211855575-930448336.png

3.2 截图PTA题集完成情况图

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

1120964-20171110211136216-260071804.png

1120964-20171110211118653-1982376424.png

3.3 统计本周完成的代码量

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

周次 总代码量 新增代码量 总文件数 新增文件数
1 0 0 0 0
2 265 265 9 9
3 326 61 8 -1
4 0 0 0 0
5 187 187 6 -2
6 209 22 6 0
7 174 -35 4 -2
8 192 22 4 0
9 201 9 5 1

1120964-20171112212253059-334754429.png

选做:4. 使用Java解决实际问题

尝试为代码统计项目 增加图形界面。

3.1 设计图形界面(可用纸画)。
3.2 从该git项目fork一个分支,在该分支上进行你的开发,以后如果开发的好,可以尝试向开发者提出pull request。注意:规划好包名。

转载于:https://www.cnblogs.com/xjm123456/p/7810254.html

你可能感兴趣的文章
java中相同名字不同返回类型的方法
查看>>
java中的容器解释
查看>>
Rails NameError uninitialized constant class solution
查看>>
网络直播电视之M3U8解析篇 (下)
查看>>
开涛spring3(3.4) - DI 之 3.4 Bean的作用域
查看>>
Android 获取SDCard中某个目录下图片
查看>>
【Eclipse提高开发速度-插件篇】Eclipse插件安装慢得几个原因
查看>>
linux线程的实现
查看>>
美的程序不可能从修修补补中来。它必须完美的把握住事物的本质,否则就会有许许多多无法修补的特例(转)...
查看>>
使用像素生成图象
查看>>
hadoop: hbase1.0.1.1 伪分布安装
查看>>
变量 - PHP手册笔记
查看>>
设置cookies第二天0点过期
查看>>
ntpdate公司测试
查看>>
.NET破解之轻量万能自定义信息管理系统
查看>>
Android blueZ HCI(一个):hciconfig实施和经常使用
查看>>
3、使用Lucene实现千度搜索
查看>>
【转载】NIO客户端序列图
查看>>
linux系统中如何查看日志(转)
查看>>
JavaScript的parseint()函数
查看>>