1. 本周学习总结

2. 书面作业

1. ArrayList代码分析

1.1 解释ArrayList的<contains>源代码

答:源代码

public boolean contains(Object o) {
return indexOf(o) >= 0;}
public int indexOf(Object o) {
if (o == null) {for (int i = 0; i < size; i++)if (elementData[i]==null)return i;
} else {for (int i = 0; i < size; i++)if (o.equals(elementData[i]))return i;
}
return -1;
}

解释:contains方法先判断对象是否为null,是则查看列表中是否包含null,包含返回下标。若对象不为null时,若该列表中包含指定元素则返回true。

1.2 解释<E remove(int index)>源代码

答:源代码

public E remove(int index) {rangeCheck(index);modCount++;E oldValue = elementData(index);int numMoved = size - index - 1;if (numMoved > 0)System.arraycopy(elementData, index+1, elementData, index,numMoved);elementData[--size] = null;           return oldValue;
}

解释:先判断传入的index的值是否超过了size,再取出index对应的元素下标,之后把元素全部向前进一位,最终返回被删除的元素,执行size减1,将最后一个元素置为null

1.3 结合1.1与1.2,回答ArrayList存储数据时需要考虑元素的具体类型吗?

答:不需要
原因:ArrayList的实质是一个object数组,ArrayList类众多方法的参数是Object类,而Object类是所有类的父类。

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

答:源代码

解决办法:如果内存数组容量不够时,数组容量会进行自动扩容。,将数组容量扩充为1.5倍

1.5 分析<private void rangeCheck(int index)>源代码,为什么该方法应该声明为private而不声明为public?

答:源代码

private void rangeCheck(int index) {if (index >= size)throw new IndexOutOfBoundsException(outOfBoundsMsg(index));}

解释:此方法并不需要让人知道操作过程,所以声明为private而不声明为public。

2. HashSet原理

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

答:首先使用hashCode()方法来计算哈希值从而得到存储位置,判断是否存在重复元素时,调用到equal()方法来比较,若不同则添加元素到尾部,相同则不添加

2.2 将元素加入HashSet中的时间复杂度是多少?是O(n)吗?(n为HashSet中已有元素个数)

答:时间复杂度为O(1),计算哈希值的次数是常量

3. ArrayListIntegerStack

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

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

答:数据类型不同,一个使用Array实现,一个使用列表List实现

3.2 结合该题简单描述接口的好处,需以3.1为例详细说明,不可泛泛而谈。

答:<ArrayListIntegerStack><ArrayIntegerStack>继承了同一个接口,只需要修改方法就可实现操作不同的类。

4. Stack and Queue

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

答:


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

答:使用LinkedList实现

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

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

5.1 实验总结

答:本题使用set中的Treeset来做

3.码云及PTA

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

3.1. 码云代码提交记录

3.2 截图PTA题集完成情况图

3.3 统计本周完成的代码量

周次 总代码量 新增代码量 总文件数 新增文件数
2 625 625 99 99
3 1785 1025 172 73
5 3634 1849 259 87
6 5500 1866 374 115
7 6073 573 421 47
8 6799 726 486 65
9 7479 680 607 121

转载于:https://www.cnblogs.com/jmu201621123068/p/7819286.html

201621123068 作业08-集合相关推荐

  1. JAVA基础加强篇08——集合

    集合概述 集合和数组都是容器. 数组的特点 数组定义完成并启动后, 类型确定.长度固定. 在进行增删数据操作的时候,数组是不太合适的,增删数据都需要放弃原有数组或者移位. 数组适合的场景 当业务数据的 ...

  2. 作业——08 爬虫综合大作业

    作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3075 一.把爬取的内容保存取MySQL数据库 import pan ...

  3. Numpy入门教程:08. 集合操作

    背景 什么是 NumPy 呢? NumPy 这个词来源于两个单词 – Numerical和Python.其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景: 执 ...

  4. C语言|博客作业08

    这个作业属于哪个课程 https://bbs.csdn.net/forums/csuft_swxy_C?category=0&typeId=17321 这个作业要求在哪里 https://bb ...

  5. C语言I博客作业08

    作业头 这个作业属于哪个课程 https://bbs.csdn.net/forums/csuft_swxy_C?typeId=17328 这个作业要求在哪里 https://bbs.csdn.net/ ...

  6. 2022OUC软件工程第二次作业-08组

    第二次作业:深度学习基础 一.金知霖 一.视频学习心得及问题总结 人工智能:使一部机器像人一样进行感知.认知.决策.执行的人工程序或系统 人工智能三个层面:计算智能.感知智能.认知智能 机器学习的定义 ...

  7. 学校头哥作业7_集合与字典(头哥作业[Python])

    7_1集合添加元素 n = input() try:ssn = []while True:sn = input().strip()if sn == '':breakssn.append(sn)prin ...

  8. Java作业08 计科1501 闫国雨

    (一)学习总结 1.用思维导图对本周的学习内容进行总结. 参考资料: XMind. 2.通过实验内容中的具体实例说明在执行executeUpdate()方法和executeQuery()方法中使用动态 ...

  9. C语言博客作业08,C语言I博客作业08

    IIS7下使用4.0框架集成模式URLRewriter重写中文URL乱码问题 解决方法: 1 url中中文先通过Server.UrlEncode编码 2 修改网站编码 3.更改URLRewriter. ...

最新文章

  1. 086.冒泡排序的缺点及解决方案
  2. 计算机病毒揭秘与对抗--注册表操作2
  3. 最新版ffmpeg 提取视频关键帧
  4. asp.net中创建一个简单的自定义控件
  5. Nginx的index指令
  6. 「机械」4大传动方式优劣对比:机械、电气、气压、液压
  7. 【Spring】21、用spring目标对象处理Transaction rolled back because it has been marked as rollback-only...
  8. java创建xml设置路径_java 写入xml文件 地址如何设置为局域网内的另一台服务器上...
  9. 55. Yii import class 与 对象创建
  10. c#程序设计实训报告心得体会_C程序设计实训个人总结(推荐五篇)
  11. 世界品牌新500强揭晓 中国移动央视海尔入前百名
  12. python实现离散沃尔什变换_快速沃尔什变换(示例代码)
  13. 服务器金属外壳刮花了怎么修复,pc拉杆箱被磨了怎么办?3方法快速修复(附防刮方式)...
  14. 曝光,程序员的 10 个摸鱼神器
  15. 分销商城怎样设计分销体系以及会员成长体系_OctShop
  16. Ubuntu14.04+Texlive2014+LYX-Linux下LYX的中文配置方案
  17. 最新!2020中国高校毕业生薪资排行出炉!
  18. 42所高校2020届保研率出炉!北大过半同学可保研!
  19. cv2.inRange()函数---提取票据中红色印章
  20. Android P中的AVB校验(二)

热门文章

  1. 点击改变div高度_css实现div两列布局(两种方法)
  2. SpringCloud Alibaba微服务实战(七) - 路由网关(Gateway)全局过滤
  3. 操作系统学习笔记 第一章:操作系统概述(王道考研)
  4. Halide应用开发
  5. NVIDIA GPU自动调度神经网络
  6. 跟踪自主车辆软件平台
  7. 图像超分辨率算法:CVPR2020
  8. CUDA C 纹理提取Texture Fetching
  9. YOLOvi(i=1,2,3,4)系列
  10. Git基本命令和GitFlow工作流