1:本周学习总结

2:书面作业

2.1:ArrayList代码分析

2.1.1:解释ArrayList的contains源代码

Contains方法调用indexof方法,如果元素为null,则循环比较,elementData[]中是否有为null的,有就返回下标。否则就equal比较比较elementData[]是否有相同的元素,有的就返回下标。没有返回-1.

2.1.2: 解释E remove(int index)源代码



int numMoved = size - index - 1删除指定位置的元素,arraycopy把指定位置后的元素向左移动。最后将数组长度减1.

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

不需要,ArrayList包含的是对象类型,ArrayList可以存储Object,Object是所有父类,所以不需要考虑元素的具体类型。

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



先判断是否超过数组的容量,超过就扩大数组长度,长度加1。ensureCapacityInternal方法中的size+1实现增长。另一种是判断加的位置是否超过数字长度,rangeCheckForAdd方法判断index是否越界。,在第i个位置添加元素,size+1。

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



此方法是为了判断idex是否越界,不需要用户来修改它,所以设为private,不被外界随意修改。

2.2:HashSet原理

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

HashSet的底层用哈希散列表来存储对象(默认长度为16的数组),

假如:Set set=new HashSet();

      set.add(obj);

内部存储过程为:定义h=obj.hashCode,得到obj对象的哈希码h,再对h进行hash散列运算,对数组长度进行求余,假如长度为16,则返回一个0-15之间的值,然后这个值就是存在HashSet数组中的下标。如果下标位置没有对象(不起冲突),则把obj加到该位置;如果已近有对象(起冲突),则用equals判断两对象是否相等,相等则舍弃obj,不相等,则把obj以节点的方式加在该对象下面。

所以先hashCode算出哈希地址,在调用equals方法判断是否相等。

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

直接算出地址,再逐个比较,复杂度为O(n)。

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

2.3.1:比较自己写的ArrayListIntegerStack与自己在题集jmu-Java-04-面向对象2-进阶-多态、接口与内部类中的题目自定义接口ArrayIntegerStack,有什么不同?

本题需要注意如果出栈的元素比入栈多的情况,要注意pop函数和peek函数,应判断栈空的情况。

不同:

本题栈的形式,储存用的是动态数组,可以自己扩充容量,不需要考虑沾满情况。

上次用的数组,需要自己定义top指针,入栈出栈需要指针的移动。

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

本题和之前那题都是使用接口,在编写一个类来实现接口要求的方法就可以。就像本题以integerStack为接口,在重写一个类来实现public Integer push(Integer item);

public Integer pop(); public Integer peek(); public boolean empty(); public int size();等方法。 如果没有接口的话,就需要重写一个栈类,编写功能实现方法。可见,使用接口更灵活,可在不同环境内使用不同的方法来实现接口方法。

2.4: Stack and Queue

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

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

代码:

创两个队列,偶数和奇数分别进不同的队列。

先输出两个奇数,在输出一个偶数。要注意最后一个不空格,所有要注意队列是否为空。

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

2.5.1:实验总结

本题用TreeSet可以统计数量,也可以进行排序。但是要注意只输出前10个。

先添加到集合里面:

在打印前10 个:

3:码云及PTA

3.1:码云代码提交记录

3.2:截图PTA题集完成情况图



3.3.:统计本周完成的代码量

周次 总代码量 新增加代码量 总文件夹 新增加文件夹
1 114 114 11 11
2 520 406 16 6
3 1089 569 22 6
5 1425 336 29 7
6 1819 394 31 2
7 2987 1168 54 23
8 5437 2450 79 25
9 5695 258 84 5

学号:201621123032 《Java程序设计》第8周学习总结的更多相关文章

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

    学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...

  2. 学号20145303 《Java程序设计》第一周学习总结

    学号20145303 <Java程序设计>第一周学习总结 教材学习内容总结 *dos命令行: dir:列出当前目录下的文件及文件名 md:创建目录 rd:删除目录.为空时文件夹(文件夹为空 ...

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

    学号20145322 <Java程序设计>第一周学习总结 教材学习内容总结 Java诞生于Sun公司,于1998年12月4日发布J2SE,约以两年为一周期推出重大版本更新. 2010年Or ...

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

    201521123061 <Java程序设计>第九周学习总结 1. 本周学习总结 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1 ...

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

    201521123038 <Java程序设计> 第九周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 ...

  6. 201521123045 <java程序设计>第11周学习总结

    201521123045 <java程序设计>第11周学习总结 1. 本周学习总结 2. 书面作业 2. 书面作业 Q1.1.互斥访问与同步访问完成题集4-4(互斥访问)与4-5(同步访问 ...

  7. 20175313 张黎仙《Java程序设计》第九周学习总结

    目录 学号 20175313 <Java程序设计>第九周学习总结 一.教材学习内容总结 二.教材学习中的问题和解决过程 三.代码托管 四.心得体会 五.学习进度条 六.参考资料 学号 20 ...

  8. 20175227张雪莹 2018-2019-2 《Java程序设计》第九周学习总结

    20175227张雪莹 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十一章 JDBC数据库操作 MySQL数据库管理系统 下载安装MySQL 若下载的是 ...

  9. 2018-2019-3《Java程序设计》第二周学习总结

    学号20175329 2018-2019-3<Java程序设计>第二周学习总结 教材学习内容总结      第二三章与我们所学习的C语言有很多的相似点,在这里我想主要就以我所学习的效果来讨 ...

  10. # 20175329 2018-2019-2 《Java程序设计》 第二周学习总结

    学号 2018-2019-3<Java程序设计>第二周学习总结 教材学习内容总结      第二三章与我们所学习的C语言有很多的相似点,在这里我想主要就以我所学习的效果来讨论一下JAVA与 ...

随机推荐

  1. C#图解教程 第二十五章 其他主题

    其他主题 概述字符串使用 StringBuilder类把字符串解析为数据值关于可空类型的更多内容 为可空类型赋值使用空接合运算符使用可空用户自定义类型 Main 方法文档注释 插入文档注释使用其他XM ...

  2. Directory Opus(DO) 个人使用经验 2.0

    设置已有命令的快捷键 设置方法 保存显示格式 保存方法 取消删除确认框 Windows取消删除确认框DO取消删除确认框 设置默认布局 设置方法 备份与恢复 设置已有命令的快捷键 已有命令指的是菜单栏上 ...

  3. LinkedHashMap和HashMap

    1.HashMap: HashMap里面存入的键值对在取出的时候是随机的,是比较常用的Map.它根据key的HashCode值存储数据,根据key可以直接取出它的值(当然也有冲突的情况,不过遍历链表就 ...

  4. 如何在Java应用中提交Spark任务?

    最近看到有几个Github友关注了Streaming的监控工程--Teddy,所以思来想去还是优化下代码,不能让别人看笑话,是不.于是就想改在一下之前最丑陋的一个地方--任务提交 本博客内容基于Spa ...

  5. Entity Framework Core 2.1 Preview1 新增功能简介

    两个星期前,微软发布了EF Core 2.1 Preview 1,同时还发布了.NET Core 2.1 Preview 1和ASP.NET Core 2.1 Preview 1:EF Core 2. ...

  6. 微信小程序天坑--图片汉字命名

    图片用汉字命名的,在开发者工具中是显示的,但是,在真机的微信中,是不会显示的. 大写的尴尬,微信小程序开发者工具对于做微信的UI来说,就是一个天坑,在电脑上漂漂亮亮的,到手机上各种意想不到的情况.

  7. awk多分隔符功能及wc命令案列及企业级应用

    打印最后一行行号: cat -n /etc/services|tail -1 awk '{print NR $0}' oldboy.txt|tail -1 awk '{print NR $0}' /e ...

  8. 使用text-overflow: ellipsis 处理文本溢的一个小问题

    今天在做一个自定义 select多选 搜索的时候,有这样子的一个需求: 1.点击自定义的一个 选项内容框,下拉可多选项 2.多选项不允许换行,且父溢出拆剪,(单行)溢出部分使用 "...&q ...

  9. Loadrunner 11在win7录制中失败“the recording of the application was terminated by windows due to window data execution prevention feature"

    在录制过程中遇到如下问题: 查了下如何Enable, Disable Data Execution Prevention (DEP) in Windows 10/8/7 (http://www.the ...

  10. 萌新关于C#委托一点见解

    开博第一写C#委托(一个简单的委托) 1.关于委托,一直是学习c#的萌新们的噩梦,小生也是.最近在学委托感觉瞬间被虐成狗,但作为C#中极为重要的一个内容,学好了将会及大地减少我们的代码量,而且这也是够 ...