《小白兔到大黑牛》第二篇基于源码自己实现简单的ArrayList中简单方法
2017-06-23 23:25
309 查看
无论在工作中还是在学习中,我们一定要养成多看源码的好习惯。
源码是我们的根基,想要在技术上达到更高的高度,必须要打好根基。
希望我们以后的日子里养成这样的习惯。
下面是我结合ArrayList源码及它底层实现是数组的特点,写的一个自己实现的MyArrayList.
package ch.chenhui.www;
public class MyArraylist {
//定义数组
private Object[] elementData;
//定义长度
private int size;
//size方法
public int size(){
return size;
}
//isEmpty方法
public boolean isEmpty(){
return size==0;
}
//初始长度为10
public MyArraylist() {
this(10);
}
//带参构造并判断是否小于0
public MyArraylist(int init ) {
if(init<0){
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
elementData=new Object[init];
}
//实现add方法
public void add(Object o){
//需要扩容
if(size+1>elementData.length){
//创建新数组
Object[] arr=new Object[size*2+1];
//拷贝数据 用复制方法
System.arraycopy(elementData, 0, arr, 0, elementData.length);
//用for循环也可以进行拷贝
//for(int i=0;i<elementData.length;i++){
//arr[i]=elementData[i];
//}
elementData=arr;
}
elementData[size]=o;
size++;
}
//实现get方法
public Object get(int index){
if(index<0||index>=size){
try {
throw new Exception();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return elementData[index];
}
}
源码是我们的根基,想要在技术上达到更高的高度,必须要打好根基。
希望我们以后的日子里养成这样的习惯。
下面是我结合ArrayList源码及它底层实现是数组的特点,写的一个自己实现的MyArrayList.
package ch.chenhui.www;
public class MyArraylist {
//定义数组
private Object[] elementData;
//定义长度
private int size;
//size方法
public int size(){
return size;
}
//isEmpty方法
public boolean isEmpty(){
return size==0;
}
//初始长度为10
public MyArraylist() {
this(10);
}
//带参构造并判断是否小于0
public MyArraylist(int init ) {
if(init<0){
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
elementData=new Object[init];
}
//实现add方法
public void add(Object o){
//需要扩容
if(size+1>elementData.length){
//创建新数组
Object[] arr=new Object[size*2+1];
//拷贝数据 用复制方法
System.arraycopy(elementData, 0, arr, 0, elementData.length);
//用for循环也可以进行拷贝
//for(int i=0;i<elementData.length;i++){
//arr[i]=elementData[i];
//}
elementData=arr;
}
elementData[size]=o;
size++;
}
//实现get方法
public Object get(int index){
if(index<0||index>=size){
try {
throw new Exception();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return elementData[index];
}
}
相关文章推荐
- 源码阅读:简单实现ArrayList中的主要方法
- 自己写的实现数据库事务的简单方法ExecuteSqlTran()
- 怎样在前端Javascript中调用C#方法(1)简单实现(附源码)
- 自己实现简单的AOP(二)引入Attribute 为方法指定增强对象
- 【Java】基于ArrayList实现的简单登录注册
- 深入剖析Spring Web源码(八) - 处理器映射,处理器适配器以及处理器的实现 - 基于简单控制器流程的实现
- 【java并发】基于JUC CAS原理,自己实现简单独占锁
- 利用VS根据文件目录结构创建C++工程自己简单实现的方法
- 基于jsp+servlet实现的简单博客系统实例(附源码)
- 容器第三课,JDK源码分析,自己实现ArrayList数组扩容
- [原创+源码]超简单:基于jQuery实现的选项卡(滑动门)效果
- 自己写的实现数据库事务的简单方法ExecuteSqlTran()
- 【分享】分享一个基于SSH实现的简单学生选课系统(附源码)
- 使用hadoop命令rcc生成Record 一个简单的方法来实现自己的定义writable对象
- C++实现自己的插件框架 基于QtCreator源码裁剪
- [原创+源码]超简单:基于jQuery实现的选项卡(滑动门)效果
- 自己写的实现数据库事务的简单方法ExecuteSqlTran()
- python基于pygame实现响应游戏中事件的方法(附源码)
- 基于jsp+servlet实现的简单博客系统实例(附源码)
- 我们的游戏世界(背包【仓库】,交易,任务,简单经济系统,装备)实现(基于仙剑demo聊聊游戏世界)第二篇谈谈任务