201521123028 《java程序设计》 第7周学习总结
1. 本周学习总结

2. 书面作业
Q1.ArrayList代码分析
1.1 解释ArrayList的contains源代码
Ans:
ArrayList的contains源代码

contain源代码中有这么一行
* @return <tt>true</tt> if this list contains the specified element //翻译过来就是“列表中包含指定的特殊元素时,返回True”
即“当且仅当此列表包含至少一个满足 (onull ? enull : o.equals(e)) 的元素 e 时,则返回 true。”
1.2 解释E remove(int index)源代码
Ans:
图示为E remove(int index)源代码:

删除数组中指定位置的元素,然后将该元素后的元素前移。
1.3 结合1.1与1.2,回答ArrayList存储数据时需要考虑元素的类型吗?
Ans:
不需要考虑,此处ArrayList的存储数据类型是Object类,是所有类型父类,因此可以考虑不同的类型,都可以在此之中转换。
答:不用考虑,因为其参数为Objcet类型的对象,Object类又是所有类的父类。也就是说时不需要考虑元素的类型,随便放什么类型进去都可以转换类型。
1.4 分析add源代码,回答当内部数组容量不够时,怎么办?
Ans:

当内部容量不够时,会将原来的数组元素复制到新的更大的数组,然后将ArrayList的引用指向新的数组。
1.5 分析private void rangeCheck(int index)源代码,为什么该方法应该声明为private而不声明为public?
Ans:

对使用用户而言,只需要得到remove的结果而不需要知道实现方式。所以此处用private。
Q2.HashSet原理
2.1 将元素加入HashSet(散列集)中,其存储位置如何确定?需要调用那些方法?
Ans:
HashSet(散列集)的存储形式为链表加上数组的存储形式。
将元素加入HashSet中时,会先调用元素的HashCode()方法,得到元素的HashCode值,由该值的不同确定不同的存储位置。
若表中已有其他元素,则调用加入对象的equals()方法与表中元素进行比较。如果比较结果为false,则将对象插入表中。如果比较结果为true,则用新的值替换旧的值。
Q3.ArrayListIntegerStack
题集jmu-Java-05-集合之5-1 ArrayListIntegerStack
3.1 比较自己写的ArrayListIntegerStack与自己在题集jmu-Java-04-面向对象2-进阶-多态、接口与内部类中的题目5-3自定义接口ArrayIntegerStack,有什么不同?(不要出现大段代码)
Ans:
①同样是栈,但栈的实现方法不同,ArrayListIntegerStack是用ArrayList来实现栈,ArrayIntegerStack是用Integer数组来实现栈。
②同样是栈,但是应对栈满的解决方法不同,ArrayItegerStack会直接栈满,而ArrayListIntegerStack像Q1.4说的一样,可以创建新数组扩充容量。
3.2 简单描述接口的好处.
Ans:
可以做到相同方法,不同实现。
例如3.1中的ArrayListIntegerStack和ArrayIntegerStack都继承了同一个方法,即IntegerStack,也就是说我们修改它们的实现,都不会影响他们完成的方法。
Q4.Stack and Queue
4.1 编写函数判断一个给定字符串是否是回文,一定要使用栈,但不能使用java的Stack类(具体原因自己搜索)。请粘贴你的代码,类名为Main你的学号。
import java.util.*;
interface StringStack{
public String push(String item);
public String pop();
}
class ArrayListStringStack implements StringStack{
private List<String> list;
public ArrayListStringStack() {
list=new ArrayList<String>();
}
@Override
public String push(String item) {
// TODO Auto-generated method stub
if(item==null)
return null;
list.add(item);
return item;
}
@Override
public String pop() {
// TODO Auto-generated method stub
if(list.isEmpty())
return null;
return list.remove(list.size()-1);
}
}
public class Main201521123028{
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sca=new Scanner(System.in);
StringStack stack=new ArrayListStringStack();
String s=sca.next();
int j=1;
for(int i=0;i<s.length();i++)
{
stack.push(String.valueOf(s.charAt(i)));
}
for(int i=0;i<s.length();i++)
{
if(!String.valueOf(s.charAt(i)).equals(stack.pop()))j=0;
else j=1;
}
if(j==1)System.out.println("true");
else System.out.println("flase");
}
}
Q5.统计文字中的单词数量并按单词的字母顺序排序后输出
题集jmu-Java-05-集合之5-2 统计文字中的单词数量并按单词的字母顺序排序后输出 (不要出现大段代码)
5.1 实验总结
Ans:使用代码注释说明一下比较重要的程序段
TreeSet<String> strset=new TreeSet<String>();//使用Set方法,会默认将元素排序,因此无需手动排序
//输入单词,若输入不为"!!!!!"则继续输入
for(i=0;;i++){
str=in.next();
if(str.equals("!!!!!")) break;
else strset.add(str);
}
当使用Set方法后,就无需我们完成排序操作了,那么只需要完成输出前十单词和统计单词数量就可以了
3.1. 码云代码提交记录

201521123028 《java程序设计》 第7周学习总结的更多相关文章
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
随机推荐
- [算法题] Search in Rotated Sorted Array ii
题目内容 题目来源:LeetCode Suppose an array sorted in ascending order is rotated at some pivot unknown to yo ...
- WebAPi接口安全之公钥私钥加密
WebAPi使用公钥私钥加密介绍和使用 随着各种设备的兴起,WebApi作为服务也越来越流行.而在无任何保护措施的情况下接口完全暴露在外面,将导致被恶意请求.最近项目的项目中由于提供给APP的接口未对 ...
- KMS注册
--KMS注册 -------------2014/03/25 --Read this First http://social.technet.microsoft.com/wiki/contents/ ...
- WebSphere服务器已启动但是初始化失败问题
--WebSphere服务器已启动但是初始化失败问题 -----------------------------------------------2014/03/06 经常有开发同事反映,环境用着用 ...
- js原型学习
js中所有对象都存在一个隐式原型_ _proto_ _,指向创建这个对象的函数的原型prototype; 而函数的原型prototype都是Object函数的一个对象,也有隐式原型,指向的就是Obje ...
- Android上传图片到服务器,服务端利用.NET WCFRest服务读取文件的解决方案
在项目中遇到要将Android设备拍摄的照片上传的服务器,将文件保存在服务器本地的文件夹中,数据库中保存的是图片文件名.整个上传是将图片生成二进制流通过HTTP请求上传到服务端,服务端是基于.NET环 ...
- luogu3384 【模板】树链剖分
P3384 [模板]树链剖分 题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节 ...
- 利用Python实现kNN算法
邻近算法(k-NearestNeighbor) 是机器学习中的一种分类(classification)算法,也是机器学习中最简单的算法之一了.虽然很简单,但在解决特定问题时却能发挥很好的效果.因此,学 ...
- 【SVN】手动删除svn元信息
工作中当重建svn仓库,需要把之前的项目导入到新的仓库中,熟悉又快捷的方式是项目上右键->Team断开连接->删除元信息,然后项目右键->Team>Share Project- ...
- [js高手之路]面向对象+设计模式+继承一步步改造简单的四则运算
到目前为止,我已经写完了面向对象完整的一个系列知识,前面基本属于理论,原理的理解,接下来,我们就用学到的知识来实战下吧. 看看理解原理和理论是否重要?例子从简单到复杂 一.单体(字面量)封装加减乘除 ...