java基础之简单手写ArrayList,闲话休提,直接上代码:
import java.util.Arrays;
/**
* @Author: gerald
* @Description: 手写ArrayList
* @Date: Created in 2020/12/16 18:23
* @Modified By:
**/
public class MyArrayList {
//存储任意类型元素
private Object[] elements = null;
//数组中存储多少元素
private int size = 0;
private static final int DEFAULT_INITIAL_CAPACITY = 10;
public MyArrayList() {
this(10);
}
public MyArrayList(int initialCapacity) {
if (initialCapacity < 0) {
throw new IllegalArgumentException("容量不能为负");
}
elements = new Object[initialCapacity];
}
//保存新的元素
public void add(Object ele) {
//判断和扩容
if (size == elements.length) {
Object[] temp = Arrays.copyOf(elements, elements.length * 2);
elements = temp;
}
elements[size] = ele;
size++;
}
//查询指定索引位置元素
public Object get(int index) {
if (index < 0 || index > size) {
throw new IllegalArgumentException("容量不能为负");
}
return elements[index];
}
//替换指定位置元素
public void set(int index, Object newEle) {
if (index < 0 || index > size) {
throw new IllegalArgumentException("容量不能为负");
}
elements[index] = newEle;
}
//删除指定索引位置元素
public void remove(int index) {
if (index < 0 || index > size) {
throw new IllegalArgumentException("容量不能为负");
}
for (int i = index; i < size - 1; i++) {
//把index+1位置移动到index位置
elements[i] = elements[i + 1];
}
//把最后一个位置设置为null
elements[size - 1] = null;
//size-1
size--;
}
//返回数组元素个数
public int size() {
return size;
}
//判断数组中元素个数是否为0
public boolean isEmpty() {
return size == 0;
}
//清空元素
public void clear() {
this.elements = new Object[DEFAULT_INITIAL_CAPACITY];
size = 0;
}
@Override
public String toString() {
if (elements == null) {
return "null";
}
if (size == 0) {
return "[]";
}
StringBuilder sb = new StringBuilder(size * 2 + 1);
sb.append("[");
for (int i = 0; i < size; i++) {
sb.append(elements[i]);
if (i != size - 1) { //判断是否最后一个元素
sb.append(",");
} else {
sb.append("]");
}
}
return sb.toString();
}
}
网友评论