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;

}

作用是验证该ArrayList中是否包含某个对象,由indexOf(Object o)返回第一个出现的元素o的索引,如果不存在,则返回-1。

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; // clear to let GC do its work return oldValue;
}

查找此ArrayList中是否包含要找的元素,若有,返回true,否则返回false;在源代码注释中,Removes the element at the specified position in this list.删除此列表中指定位置的元素。

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

元素的类型是引用类型,不能存放基本类型,像int类型,要用Integer类型,这样存放的就是int数据,在ArrayList中也可以同时存放不同类型的对象,此时要加上泛型

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

对源代码分析如下,内部数组容量不够时,可以通过扩大数组长度,也可以改变容器的大小,或者将数组转移到更大的容器。

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

rangeCheck只需要被remove引用,对下标是否越界进行判断,因此使用private就够了,private的权限范围比public小,但是对rangeCheck来说,声明为private完全能够发挥它的作用,使用public反而有点浪费且没什么必要。

2. HashSet原理

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

当向HashSet中添加一个元素时,HashSet会调用该对象的hashCode()方法得到其hashCode值,然后根据该值决定该对象的存储位置,但是如果有两个元素通过equals()方法比较返回true,而它们的hashCode()方法返回值不等,HashSet也会将它们存储在不同的位置。

3. ArrayListIntegerStack

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

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

ArrayIntegerStack实例化的时候需要规定大小,而ArrayListIntegerStack使用list可以自动扩容。此外,在ArrayIntegerStack中,出栈入栈等操作需要用到指针,而ArrayListIntegerStack使用list则不需要使用指针,可以直接通过list的一些方法来进行删除,查找等操作。

3.2 简单描述接口的好处.

接口实现扩展功能,即接口可以多继承,但是类不能,这样就不是单一的继承关系,灵活性高,可以在接口中定义多个抽象方法,在类中实现,在软件升级过程中,可以定义多个接口,避免大规模改动

4. Stack and Queue

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

class StackArray{
ArrayList<Character> arr = new ArrayList<Character>();
public StackArray(String s){
for(int i=0;i<s.length();i++)
arr.add(s.charAt(i));
}
public Character push(Character c){
arr.add(c);
return c;
}
public Character pop() {
return arr.remove(arr.size() - 1);
}
public int size(){
return arr.size();
}

}

public class Main201521123015 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

String s = sc.nextLine();

StackArray str = new StackArray(s);

for(int i=0;i<str.size();i++){

if(s.charAt(i) != str.pop()){

System.out.println("NO");

return;

}

}

System.out.println("YES");

}

}

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

import java.util.*;

interface TStack{

public Character push(Character item);//如item为null,则不入栈直接返回null。如栈满,也返回null.

public Character pop();//出栈,如为空,则返回null.

public Character peek();//获得栈顶元素,如为空,则返回null.

public boolean empty();//如为空返回true

public int size();//返回栈中元素数量

}

class ArrayListTStack implements TStack{

private List list;

}//mu-Java-05-集合中5-1的自定义stack,将List的对象类型变为Character,其他不变

public class Main201521123015{

public static void main(String[] args) {

Scanner in=new Scanner(System.in);

ArrayListTStack stack=new ArrayListTStack();

String str=in.nextLine();

int t=-1;

int x=0;

for(int i=0;i<str.length();i++){

stack.push(str.charAt(i));

}

for(int j=str.length()-1;j>=0;j--){

if(stack.peek().equals(str.charAt(x))){

stack.pop();

x=x+1;

t=1;

}

else {

t=0;

break;

}

}

if(t==1) System.out.println("yes");

else System.out.println("no");

}

}

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

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

5.1 实验总结

TreeSet是SortedSet接口的唯一实现类,TreeSet可以确保集合元素处于排序状态。TreeSet支持两种排序方式,自然排序 和定制排序,其中自然排序为默认的排序方式。向TreeSet中加入的应该是同一个类的对象。

TreeSet判断两个对象不相等的方式是两个对象通过equals方法返回false,或者通过CompareTo方法比较没有返回0。

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

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

添加结算模块

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

201521123015 《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. Loadrunner常见错误处理方法

    1.错误 -26601: 解压缩函数(wgzMemDecompressBuffer)失败,返回代码=-5 (Z_BUF_ERROR).inSize=0.inUse=0.outUse=0 用LR做压力测 ...

  2. 修改maven的默认JDK

    在我们实际使用IDEA开发maven项目的时候,创建maven项目的默认版本是jdk1.5,当然我们可以通过其他手段去修改module的JDK版本,或JDK的编译级别等等,但是如果每次你都这样修改,那 ...

  3. php面试题汇总一(基础篇附答案)

    一份不错的php面试题,附答案,有准备换工作的同学可以参考一下. 1:使用五种以上方式获取一个文件的扩展名要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,必须使用PHP ...

  4. css的定位和浮动

    定位 浮动 float代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  5. 第3天:CSS浮动、定位、表格、表单总结

    今天学的是浮动.定位.表格.表单等内容,这些是CSS中最容易混淆的知识,有许多小技巧在写代码过程中需要注意.下面是主要知识点: 一.float浮动1.块元素在一行显示2.内联元素支持宽高3.默认内容撑 ...

  6. c#中的interface abstract与virtual介绍

    abstract 与virtual : 方法重写时都使用 override 关键字,interface中的方法和abstract方法都要求实现  interface用来声明接口1.只提供一些方法规约, ...

  7. 【Spring】JDBC事务管理XML配置

    将spring事务管理与spirng-mybatis分离开了: <?xml version="1.0" encoding="UTF-8"?> < ...

  8. windbg内存查看(d*)

    d*命令 d{a|b|c|d|D|f|p|q|u|w|W} Address [/c ColumuWidth] [l Length] Address:查看address地址处的内存. ColumnWid ...

  9. Java温故而知新-杨辉三角形

    Java温故而知新-杨辉三角形 一. 先说需求 需求 打印输出杨辉三角形,行数可变,支持50行内的任意数. 预期结果如图所示 1 这是第几行呢,是第1 1 1 这是第几行呢,是第2 1 2 1 这是第 ...

  10. Jmeter代理服务器设置

    上一篇我们讲了代理工作的原理,这次我们就来分享下,如何来设置代理. (一)设置Jmeter之web代理,操作步骤这里就直接用动图代替了. 第一步:设置Jmeter的代理,添加Http代理服务器 第二步 ...