模拟ArrayList底层实现

来源:互联网 发布:ubuntu文件夹有锁 编辑:程序博客网 时间:2024/05/22 14:12
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));}}

0 0