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通过indexOf(o)的返回值是否不小于0判断是否有这个对象,如果该对象或者元素存在,则indexOf方法返回其位置,如果不存在,则返回-1。

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

public E remove(int index) {
RangeCheck(index);
modCount++;
E oldValue = (E) elementData[index];
int numMoved = size - index - 1;
if (numMoved > 0)
System.arraycopy(elementData, index+1, elementData, index,
numMoved);
elementData[--size] = null; // Let gc do its work
return oldValue;
}

先判断是否越界,根据指定的位置删除元素,向左移动所有后续元素,再将长度减1。

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

不需要

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

public void add(int index, E element) {
if (index > size || index < 0)
throw new IndexOutOfBoundsException(
"Index: "+index+", Size: "+size);
ensureCapacity(size+1); // Increments modCount!!
System.arraycopy(elementData, index, elementData, index + 1,
size - index);
elementData[index] = element;
size++;
}
private void ensureCapacityInternal(int minCapacity) {
if (elementData == EMPTY_ELEMENTDATA) {
minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity);
} ensureExplicitCapacity(minCapacity);
}

判断需要加入新元素的位置是否超过数组容量,如果超过,则先扩大数组容量,使其长度加1。

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

private void rangeCheck(int index) {
if (index >= size) {
throw new RuntimeException("range out");
}
}

避免被外界访问与修改。

2.HashSet原理

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

保存到HashSet中的对象覆盖hashCode()和equals(),将对象加入到HashSet中时,会首先调用hashCode方法计算出对象的hash值,接着根据此hash值调用HashMap中的hash方法,得到要保存的位置,接着找到这个位置的对象,并调用equals方法比较这两个对象是否相等,如果相等则不添加,不相等就添加。

2.2 选做:尝试分析HashSet源代码后,重新解释1.1

3.ArrayListIntegerStack

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

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

jmu-Java-04-面向对象2-进阶-多态、接口与内部类中的自定义接口ArrayIntegerStack中的操作都是自己写的,而题集jmu-Java-05-集合之5-1中的ArrayListIntegerStack中用到list,可以直接使用list中的操作达到要求。

3.2 简单描述接口的好处.

面向接口编程可以对不同类用一个接口来实现方法。各个对象之间的关系是编程重要的一点,小到不同类之间的互通,大到各模块之间的交互,接口的重要性不言而喻。

4.Stack and Queue

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

public class Main201521123078 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String a=sc.next();
System.out.println(judge(a));
} public static boolean judge(String a){
ArrayListIntegerStack stack=new ArrayListIntegerStack();
char [] b=a.toCharArray();
for (int i = 0; i < b.length; i++) {
stack.push(b[i]);
}
for(int i=0;i<b.length;i++)
{
if(b[i]!=stack.pop()){
return false;
}
}
return true;
}
}

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

while(!a.isEmpty() || !b.isEmpty())
{
Integer x = a.poll();
if(x != null){
if(b.isEmpty() &&a.isEmpty())
System.out.print(x);
else
System.out.print(x+ " ");
} Integer y = a.poll();
if(y != null){
if(b.isEmpty() && a.isEmpty())
System.out.print(y);
else
System.out.print(y + " ");
}
Integer z= b.poll();
if(z != null){
if(b.isEmpty() && a.isEmpty())
System.out.print(z);
else
System.out.print(z + " ");
} }

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

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

5.1 实验总结

public class Main {

	public static void main(String[] args) {
Set<String> set = new TreeSet(); Scanner in = new Scanner(System.in);
while(in.hasNext()){
String s = in.next();
if (s.equals("!!!!!"))break;
set.add(s);
}
System.out.println(set.size());
for (int i = 0; i < 10 ; i++) {
System.out.println(set.toArray()[i]);
}
}
}

3. 码云上代码提交记录及PTA实验总结题目集:jmu-Java-05-集合

3.1. 码云代码提交记录

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

  1. 201521123027 <java程序设计>第七周学习总结

    1.本周学习总结 2.书面作业 Q1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 答: 源代码: //contains()方法 public boolean c ...

  2. 201871010106-丁宣元 《面向对象程序设计(java)》第七周学习总结

    201871010106-丁宣元 <面向对象程序设计(java)>第七周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nwn ...

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

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

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

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

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

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

  6. 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结

    20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...

  7. 20155303 2016-2017-2 《Java程序设计》第二周学习总结

    20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...

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

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

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

    20175209 <Java程序设计>第九周学习总结 一.教材知识点总结 有关数据库下载中存在可能出现的问题已经在博客<数据库安装和使用过程中出现的一些问题>给出了相应的解决办 ...

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

    20175317 <Java程序设计>第九周学习总结 学前准备 首先下载XAMPP,下载完成后打开: 将前两个选项打开 在IDEA中配置驱动mysql-connector-java-5.1 ...

随机推荐

  1. pwnable.kr memcpy之write up

    // compiled with : gcc -o memcpy memcpy.c -m32 -lm #include <stdio.h> #include <string.h> ...

  2. Linux操作系统-命令-aptitude install unzip

    如果linux系统没有自带unzip,请执行aptitude install unzip以安装. 使用到这条Linux命令的场景是: 当我把Jmeter的压缩包(xxx.zip)拷贝到远程的Linux ...

  3. UNIX 高手的 10 个习惯

    引言 当您经常使用某个系统时,往往会陷入某种固定的使用模式.有时,您没有养成以尽可能最好的方式做事的习惯.有时,您的不良习惯甚至会导致出现混乱.纠正此类缺点的最佳方法之一,就是有意识地采用抵制这些坏习 ...

  4. 关于Uncaught SyntaxError: Unexpected token o in JSON at position 1,chrome持续报错的相关解析

    今天跟大家分享我前两天遇见的一个BUG,说出来很难受,因为这个BUG花了我一个多小时去找原因,后来莫名其妙的故障消失了,强迫症犯了的我,居然花了2个多小时去故意再制造这个BUG,只想弄明白WHY??? ...

  5. JavaWeb(一)JSP基础组成

    JSP(Java sever pages):一种用于开发动态web页面(资源)的技术. jsp页面是在服务器上运行的一个页面,一个jsp页面就是一个类.写jsp就像在写html,jsp允许在页面中编写 ...

  6. destoon源码分析一

    #0x01 先记录一些之前模糊的小知识点,补充一下 set_magic_quotes_runtime() -- 设置magic_quotes_runtime配置激活状态(php 5.3 被弃用,php ...

  7. 浏览网页之Web服务器

    Web服务器... ----------------------------- 网站服务器响应用户请求 ========================= 浏览网页的时候需要翻越一道墙 Firewal ...

  8. java中 this 的三种用法

    Java中this的三种用法 调用属性 (1)this可以调用本类中的任何成员变量 调用方法(可省略) (2)this调用本类中的成员方法(在main方法里面没有办法通过this调用) 调用构造方法 ...

  9. 【算法设计与分析基础】25、单起点最短路径的dijkstra算法

    首先看看这换个数据图 邻接矩阵 dijkstra算法的寻找最短路径的核心就是对于这个节点的数据结构的设计 1.节点中保存有已经加入最短路径的集合中到当前节点的最短路径的节点 2.从起点经过或者不经过 ...

  10. 安装oracle后登录时出现 ERROR: ORA-01031 insufficient privileges

    运行环境:在自己笔记本电脑(win10)上安装测试 操作系统版本:64位win8.1 Oracle版本:64位 oracle 11g 安装oracle 成功后//以管理员身份登录oracle 在cmd ...