前言
在Java中我们常常用到容器List、Set、map,在这里我重写Arraylist,以更好的了解java源码下面我们用一副图来表示容器
方法实现
自定义容器:
package arraylist;
public class Mycollection <E>{
Object[] obj=new Object[5];
public void set(E objs,int index){
obj[index]=objs;
}
public Object get(int index ){
return obj[index];
}
}
自定义arraylist:
package arraylist;
import java.util.Arrays;
public class NewArrayLIst<E> {
//定义Object数组
private Object[] elementData;
//定义集合内容长度
private int size;
//定义集合初始长度
private static final int Defalt_capacity=10;
//构造方法一
public NewArrayLIst(){
elementData=new Object[Defalt_capacity];
}
//构造方法二
public NewArrayLIst(int capacity){
elementData=new Object[capacity];
}
//增加元素方法考虑扩容方法
public void add(E obj){
//如果到达最大长度则扩容长度
if(size==elementData.length){
Object[] newArray=new Object[elementData.length+(elementData.length>>1)];//10-->10+10/2
//拷贝老数组
System.arraycopy(elementData,0,newArray,0,elementData.length);
elementData=newArray;
}
elementData[size++]=obj;
}
//toString 方法
public String toString(){
StringBuilder sb=new StringBuilder();
sb.append("[");
for(Object obj:elementData){
if(obj!=null)
sb.append(obj+",");
}
sb.setCharAt(sb.length()-1,']');
return sb.toString();
}
//set检查索引抛出异常
public void set(E element,int index){
if(index<0||index>=size){
throw new RuntimeException();
}
elementData[index]=element;
}
//get
public Object get(int index){
return elementData[index];
}
}
网友评论