集合第一步:模拟ArrayList底层实现

来源:互联网 发布:椰子油 知乎 编辑:程序博客网 时间:2024/05/22 14:45
package cn.sdut.chapter5;import java.util.Arrays;/* * ArrayList 底层是一个动态数组 模拟实现 */public class MyArrayList {private Integer[] elements;private int size = 0;private final static int DEFAULT_VALUE =10;public MyArrayList(){this(DEFAULT_VALUE);}public MyArrayList(int defaultValue) {elements = new Integer[defaultValue];}//自定义初始化长度public void init(int i) {elements = new Integer[i];}//添加public void add(Integer num) {if(size==elements.length){elements =Arrays.copyOf(elements, size+(size>>1));//扩容1.5倍}elements[size] = num;size++;}//删除public void remove(int index){if(index>size-1 || index<0 ){throw new IllegalArgumentException("输入索引超出范围");}for(int i = index;i<size-1;i++){elements[i] = elements[i+1];}elements[size-1] = null;size--;}//修改public void set(int i, Integer j) {if(i>size-1 || i<0){throw new IllegalArgumentException("输入所以超出范围");}elements[i] = j;}public void print(){for(int i = 0;i<size;i++){System.out.println(elements[i]);}}public boolean isEmpty() {return size==0;}public int size() {return size;}//测试public static void main(String[] args) {MyArrayList list = new MyArrayList();list.init(10);list.add(10);list.add(9);list.add(8);list.add(70);list.add(10);list.add(9);list.add(8);list.add(70);list.add(10);list.add(9);list.add(8);list.add(70);list.add(10);list.add(9);list.add(8);list.add(70);//list.remove(20);//list.set(0,11);list.print();list.isEmpty();list.size();}}