package collection;
public class MyArrayList {
private Object[] arr = new Object[10];
private int size;
public void add(Object obj){
if(size >= arr.length){
Object[] newArr = new Object[arr.length+(arr.length>>1)];
System.arraycopy(arr, 0, newArr, 0, arr.length);
arr = newArr;
}
arr[size++] = obj;
}
public Object get(int index){
if(index >= size){
throw new IndexOutOfBoundsException("index:"+index+" out of size:"+size);
}
return arr[index];
}
public int size(){
return size;
}
public void set(int index, Object obj){
if(index>=size){
throw new IndexOutOfBoundsException("index:"+index+" out of size:"+size);
}
arr[index] = obj;
}
public void add(int index, Object obj){
if(size == arr.length){
Object[] newArr = new Object[arr.length+(arr.length>>1)];
System.arraycopy(arr, 0, newArr, 0, arr.length);
arr = newArr;
}
if(index > size){
throw new IndexOutOfBoundsException("index:"+index+" out of size:"+size);
}
System.arraycopy(arr, index, arr, index+1, size-index);
arr[index] = obj;
size++;
}
public String toString(){
if(size==0){
return "[]";
}
StringBuffer sb = new StringBuffer("[");
for (int i = 0; i < size; i++) {
if(i != size-1){
sb.append(get(i)+",");
}else{
sb.append(get(i)+"]");
}
}
return sb.toString();
}
public static void main(String[] args) {
MyArrayList mal = new MyArrayList();
mal.add("a");
mal.add("b");
mal.add("c");
mal.add("d");
System.out.println(mal.get(3));
mal.set(0, "0");
System.out.println(mal.get(0));
mal.add(1, "1");
// mal.add(4, "b");
System.out.println(mal);
System.out.println(mal.size());
// System.out.println(mal.get(3));
}
}
模拟ArrayList底层实现
最新推荐文章于 2021-10-22 12:10:15 发布