码迷,mamicode.com
首页 > 其他好文 > 详细

#ArrrayList底层代码的实现

时间:2019-05-26 12:39:09      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:ISE   sys   size   获得   main方法   OLE   capacity   else   构造   

定义变量

首先要想实现该块代码,必须定义三个私有变量。
private Object[] elementData;该变量用来存储容器中元素的个数。
private int size;该变量表示当前容器已经存在的元素个数;
private static finnal int FAULT_CAPACITY = 10;默认当前容器允许存储的元素个数为10个。

定义构造方法

其核心代码如下所示:
public Test(int index){
if(size<0){
throw new RunTimeException(‘容器容量不能为负数!");
}else if(size==0){
elementData = new Object[FAULT_CAPACITY];
}else{
elementData = new Object[index];
}
}

main主方法

其核心代码如下所示:
public static void main(String[] args){
Test t = new Test(2);
}

添加元素方法

其核心代码如下所示:
public void add(E element){
if(size==elementData.length){
Object[] newArray = new Object[elementData.length+(elementData.length>>1)];
System.arraycopy(elementData,0,newArray,0,elementData.length);
elementData = newArray;
}
elementData[size++] = element;
}

判断索引是否合法方法

其核心代码如下所示:
public void checkArrage(int index){
if(index<0||index>size-1){
throw new RunTimeException("当前索引不合法!+index");
}

获得元素个数方法

其核心代码如下所示:
public int size(){
return size;
}

判断容器是否为空方法

其核心代码如下所示:
public boolean isEmpty(){
return size==0?true:false;
}

获得指定位置元素方法

其核心代码如下所示:
public E get(int index){
checkArrage(index);
return (E)elementData[index];
}

移除元素方法

其核心代码如下所示:
public void move(E element){
for(int i=0;i<size;i++){
if(element.equals(get(i))){

}
}
}

移除指定位置元素方法

其核心代码如下所示:
public void move(int index){
checkArrage(index);
int nummoved = size-index-1;
if(nummoved>0){
System.arraycopy(elementData,index+1,elementData,index,nummoved){
}
elementData[--size] = null;
}
}

设定方法

其核心代码如下所示:
public void set(int index, E element){
checkArrage(index);
elementData[index] = element;
}

字符转换方法

其核心代码如下所示:
public String toString(){
StringBulider sb = new StringBulider();
sb.append(‘[‘);
for(int i=0;i<size;i++){
sb.append(elementData[i]+",");
}
sb.setCharAt(sb.length()-1,‘]‘);
return sb.toString();
}

PS:以上方法只需要在main方法里面调用就行。

#ArrrayList底层代码的实现

标签:ISE   sys   size   获得   main方法   OLE   capacity   else   构造   

原文地址:https://www.cnblogs.com/fcy1/p/10921385.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!