1. 本周学习总结

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

参考资料:

XMind

2. 书面作业

ArrayList代码分析

1.1 解释ArrayList的contains源代码

/**
* 判断动态数组是否包含元素o
*/
public boolean contains(Object o) {
return indexOf(o) >= 0;
} /**
* 返回第一个出现的元素o的索引位置
*/
public int indexOf(Object o) {
if (o == null) {//返回第一个null的索引
for (int i = 0; i < size; i++)
if (elementData[i] == null)
return i;
} else {//返回第一个o的索引
for (int i = 0; i < size; i++)
if (o.equals(elementData[i]))
return i;
}
return -1;//若不包含,返回-1
} /**
* 返回最后一个出现的元素o的索引位置
*/
public int lastIndexOf(Object o) {
if (o == null) {
for (int i = size - 1; i >= 0; i--)
if (elementData[i] == null)
return i;
} else {
for (int i = size - 1; i >= 0; i--)
if (o.equals(elementData[i]))
return i;
}
return -1;
}

首先调用indexOf(),判断传入的对象是否为空,如果为空,则遍历整个集合的元素,如果集合的某个元素为空,返回该元素的下标。

如果传入对象不为空,则遍历整个集合的元素,如果该元素和集合内某个元素的equals比较结构为true,返回该元素下标。

如果遍历完集合后没有元素存在于集合中就返回-1。最后如果indexOf()方法返回大于0,就说明集合内存在该元素,小于0则不存在

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

/**
* 删除指定索引index下的元素,返回被删除的元素
*/
public E remove(int index) {
RangeCheck(index);//检查索引范围 E oldValue = (E) elementData[index];//被删除的元素
fastRemove(index);
return oldValue;
}

remove是将index下标的元素去除掉之后,后续元素依次向前移动

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

不需要,arr是一个动态数组(ArrayList),其中可以放进去多种类型的数据

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

新建一个新的数组,长度为内部的一个函数进行计算后返回的结果.之后对a进行copy。copy两次。

第一次copy为从0开始,copy长度为index。

第二次为从index+1开始,copy长度为s-index.其实最终目的就是把中间index下标空出来。再将objcet 复制给 a[index]

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

使用private,外部类不能直接访问修改该方法,因为外部类没有修改方法的必要,使用public并不是不可以

HashSet原理

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

向HashSet中添加一个元素时,HashSet会调用该对象的hashCode()方法得到其hashCode值,然后根据该值决定该对象的存储位置,

但是如果有两个元素通过equals()方法比较返回true,而它们的hashCode()方法返回值不等,HashSet也会将它们存储在不同的位置

ArrayListIntegerStack

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

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

ArrayListIntegerStac使用ArrayList存储,可以扩充容量;ArrayIntegerStack使用integer数组,数组容量需要事先设定

3.2 简单描述接口的好处.

接口更容易实现扩展功能,java类与类之间只能单继承,类与接口之间可以多实现,不改源码,可以定义多个接口增强功能,以后复写接口中的抽象方法

写小的应用程序看不到接口的优势,写大点的程序就显示出接口的优势

Stack and Queue

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

public class Main2015121 {

public static void main(String[] args) {
Stack<Character> stack = new Stack<Character>();
Scanner scanner = new Scanner(System.in);
int a = 1;
String string = scanner.next();
for (int i = 0; i < string.length(); i++) {
stack.push(string.charAt(i));
}
for (int j= 0; j < string.length(); j++) {
if (stack.pop() != string.charAt(j)) {
System.out.println("否");
break;
}
else {
System.out.println("是");
break;
}
}
}
}

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

首先需要针对 A 和 B 业务设计两个循环队列,分别处理两类业务请求;

然后 根据输入序列整数的奇偶性将各个整数分配到这两个队列中。

另外,需要设计针 对两个队列处理过程的流程,这是一个循环。

在循环中,先从 A 队列中输出两个 元素,然后再从 B 队列中输出一个元素。当发现某一个队列中的元素为空时,输 出另一个队列中的所有元素

注意对队列满、空情况的 判断。

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

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



这里可以用String里的split方法分割这个字符串,这样就可以统计单词数和排序了

5.1 实验总结

还可以用Scanner类,Scanner类是一个扫描器,它可以扫描根据我们的要求字符串,达到想要的结果

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

7.1 完善图形界面(说明与上次作业相比增加与修改了些什么)

7.2 使用集合类改进大作业

参考资料:

JTable参考项目

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

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

3.1. 码云代码提交记录

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

201521123121 《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. XAMPP启动MySQL时报端口被占用错误

    1 问题描述 启动XAMPP中的mysql时宝凑,错误信息是:3306端口被占用 2 问题诊断 2.1 可能是在安装XAMPP之前安装了MySQL,这样电脑中就有两个MySQL啦,如果我们在安装时都采 ...

  2. linux 压缩解压打包工具大集合

    压缩.解压缩及归档工具有很多,今天小编就整理几个大家较为常用的. compress gzip  bzip2 xz zip tar cpio 一.压缩.解压工具 用法 压缩 工具 压缩后 压缩包格式 解 ...

  3. Oracle dba_tablespace_usage_metrics 视图 查看表空间 说明

    一.DBA_TABLESPACE_USAGE_METRICS 视图的理论说明   群里一朋友说使用dba_tablespace_usage_metrics 视图查看表空间的结果不正确,如下:     ...

  4. 初学python类

    边看python官方2.7的文档,一边动手测试了一些例子加深自己的印象. 官方文档的网址:http://python.usyiyi.cn/python_278/tutorial/classes.htm ...

  5. 像Linux终端一样使用windows命令行【cmder】

    像Linux终端一样使用windows命令行[cmder] 下载cmder 我下载的是full版,下载之后是个压缩包,解压之后点击cmder.exe即可运行. 需要解决的几个问题 默认的是λ,当然还是 ...

  6. 质量体系 CMMI

    CMMI初识 CMM-Capability Maturity Model,能力成熟度模型.CMMI-Capability Maturity Model Integration,能力成熟度模型集成. C ...

  7. cvpr2017:RSVP

    1.简单介绍 这个框架主要应用场景是更智能的视频监控.主要贡献是利用long term和short term的时序信息来预测当前帧.框架分割的主要对象是人,将图像中的人物分割成头发.脸.大衣.裤子.包 ...

  8. js 小数计算为啥和想象中不一样!

    今天遇到了一个比较有趣的事,如果要你计算0.1+0.2等于多少你会怎么回答? "0.3啊!"你可能都不会考虑.我也一样,当a=0.1,b=0.2时 if(a+b === 0.3){ ...

  9. apache-DOS

    对DSO的理解还不是特别深刻,所以把自己查来的资料整理一下并想就此作一个总结.暂时先把资料堆到blog里面了,有时间再整理总结.   一.以下源于<Apache HTTP Server Vers ...

  10. ASP.NET CORE 2.0 不小心踩得坑

    前言 我是跟着 https://github.com/FQLin/Docs 学习asp.net core 2.0 的 1.EF迁移 EF 的迁移方式有两种: Command-line interfac ...