1. 本周学习总结

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

2. 书面作业

1. ArrayList代码分析

  • 1.1 解释ArrayList的contains源代码

      该方法调用了indexOf(Object o)方法;
    而indexOf(Object o)方法对参数o执行的是:
    遍历该ArrayList型的容器,若找到与o参数等值的项则返回该项位置,找不到则返回-1;
    contain(Object o)方法则是对indexOf(Object o)所返回的值进行判断,若返回值大于等于0则说明存在,由此返回true,若为-1则返回false表不存在。
  • 1.2 解释E remove(int index)源代码

      该方法先调用rangeCheck(int index)方法,判断该位置是否超出容器范围,若超出则抛出IndexOutOfBoundsException(outOfBoundsMsg(index));
    若未超出则保存该位置的数据(旧数据),将该位置之后的数据往前移动,最后一个数据改为null后简短容器长度;
    最后返回旧数据。
  • 1.3 结合1.1与1.2,回答ArrayList存储数据时需要考虑元素的类型吗?

      所有数据都存在该数组里,该数组被定义为Object[]型,说明所有类型都能用。
  • 1.4 分析add源代码,回答当内部数组容量不够时,怎么办?



      当容量不够时将数组的容量单元+1来储存添加的数据。
  • 1.5 分析private void rangeCheck(int index)源代码,为什么该方法应该声明为private而不声明为public?

      因为在进行各个方法的调用时需要该方法时就会自动被调用,开发者不需要自己手动进行判断是否越界。
    如 1.4题中的add()方法。

2. HashSet原理

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

      若要确定位置,则就在HashMap中找到它的hashCode,若hashCode没有被重写则都为10并返回10;
    若被重写了就返回重写后定义的值;
    这个返回的值就是hash表的位置,储存到该位置就可以了。
  • 2.2 选做:尝试分析HashSet源代码后,重新解释1.1

      调用HashMap中map的containsKey(Object key)方法,该方法又调用了getEntry(Object key)方法,返回的是key在哈希表中的位置;
    containsKey(Object key)方法将返回的值进行判断,若不为null则返回1,若为null则返回0;
    这个返回的值也就是HashSet的contains(Object key)方法的返回值。

3. 题集jmu-Java-05-集合之5-1 ArrayListIntegerStack

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

      下面以两个实验中对push方法的定义为例子来说明两者的不同。



  • 3.2 简单描述接口的好处.

      接口可以对实现类所需要的方法进行统一声明;
    实现类对接口的实现就是对其声明方法的重写。
  • 3.3 实验总结

      当用ArrayList型来储存栈的数据时就应该学会合理调用ArrayList自带的一些方法来提高工作效率,如:
    push方法可以调用ArrayList的add方法;
    empty方法可以直接返回ArrayList的isEmpty方法的返回值;
    pop方法可以调用ArrayList的remove方法。

4. Stack and Queue

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

  • 4.2 题集jmu-Java-05-集合之5-6 银行业务队列简单模拟。(不要出现大段代码)

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

  • 实验总结

      要学会使用TreeSet的自动排序功能来减少自己的工作量。

6. 选做:加分考察-题集jmu-Java-05-集合之5-3 统计文字中的单词数量并按出现次数排序(不要出现大段代码)

  • 6.1 伪代码
  • 6.2 实验总结

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

	打开软件:

	点击登录:

	输入用户密码:

	点击显示购物车:

	注销 重复登录过程  这次登陆agt账户  :

	购物车排序:

	注销  并尝试暴力破解某用户密码 :

	等待设定的freezeTime(aka 60seconds here)重新显示登陆框:

3. 码云上代码提交记录及PTA实验总结

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

  • 3.1. 码云代码提交记录

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

  • 3.2. PTA实验

    编程(5-1, 5-2, 5-3(选做), 5-6)

  • 3.3. 实验总结已经在作业中体现,不用写。

201521123098 《Java程序设计》第7周学习总结的更多相关文章

  1. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  2. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  3. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  6. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  7. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

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

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  10. 《Java程序设计》第二周学习总结

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. 初识matplotlib

    最好将配置项与代码分离,在代码之外用一个永久的文件设定matplotlib参数默认值 配置文件选择放在当前工作目录,包括以下配置项: P13

  2. 序列化之protobuf与avro对比(Java)

    最近在做socket通信中用到了关于序列化工具选型的问题,在调研过程中开始趋向于用protobuf,可以省去了编解码的过程.能够实现快速开发,且只需要维护一份协议文件即可. 但是调研过程中发现了pro ...

  3. Java微信公众平台开发之公众号支付(微信内H5调起支付)

    官方文档点击查看准备工作:已通过微信认证的公众号,必须通过ICP备案域名(否则会报支付失败)借鉴了很多大神的文章,在此先谢过了 整个支付流程,看懂就很好写了 一.设置支付目录 在微信公众平台设置您的公 ...

  4. innodb和myisam存储引擎插入速度

    --innodb和myisam存储引擎插入速度 ------------------------------------2014/05/21 MySQL 5.6 全部默认设置,插入数据9999条,性能 ...

  5. 【javascript】您好, 您要的ECMAScript6速记套餐到了

    [前言]本文“严重参考” 自阮一峰老师写的文档,在此我郑重感谢他沉默无声的帮助 总结一下ES6为 javascript中的 对象/数组/函数 这JS三巨头所提供的更简洁优雅的书写方式,以及扩展的API ...

  6. 《CS:APP》二进制炸弹实验(phase_1-3)

    <深入理解计算机系统>第三章的bomb lab,拆弹实验:给出一个linux的可执行文件bomb,执行后文件要求分别进行6次输入,每一次输入错误都会导致炸弹爆炸,程序终止.需要通过反汇编来 ...

  7. Dynamics 365中部分账号使用系统明显缓慢怎么办?先这么干!

    摘要: 本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复263或者20170828可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyon ...

  8. WeQuant交易策略—ATR

    ATR(真实波幅均值)策略 策略介绍 ATR(average true range,真实波幅均值),是用来衡量一段时间内价格的真实的平均波动范围,ATR不是一个领先指标,但是它测量最重要的市场参数之一 ...

  9. matplotlib 填充颜色

    def huitu_host(nodes,total): x = np.arange(len(nodes)) plt.figure(figsize=(9,5)) plt.xticks(x,nodes) ...

  10. Html5笔记之第六天

    Canvas元素 <canvas> 标签定义图形,比如图表和其他图像,您必须使用脚本来绘制图形. 在画布上(Canvas)画一个红色矩形,渐变矩形,彩色矩形,和一些彩色的文字. <c ...