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();
}
}