使用java实现ArrayList集合。
实现了简单的增删改查功能。
package list;
import java.util.Arrays;
/**
*
* @author Grant
*
* @param <E> 泛型
*/
public class ArrayList<E> {
// 数组容量;
private int capacity;
// 数组
private E[] array;
// 数组长度
private int size;
/**
* 默认构造方法,默认生成容量为10的数组
*/
public ArrayList() {
capacity = 10;
array = (E[]) new Object[capacity];
size = 0;
}
/**
* 生成指定容量的ArrayList
* @param capacity 指定的数组长度
*/
public ArrayList(int capacity) {
array = (E[]) new Object[capacity];
size = 0;
}
/**
* 自动扩容方法,当数组长度大于容量的1.5倍的时候会自动进行扩容,扩容大小为原数组1.5倍
*/
private void automaticExpansion() {
if (size * 1.5 > capacity) {
capacity = (int) (capacity * 1.5);
E[] newArray = (E[]) new Object[capacity];
int i = 0;
for (E elem : array) {
newArray[i] = array[i];
i++;
}
array = newArray;
}
}
@Override
public String toString() {
return "ArrayList [capacity=" + capacity + ", array=" + Arrays.toString(array) + ", size=" + size + "]";
}
/**
* 返回ArrayList长度
* @return ArrayList长度
*/
public int size() {
return size;
}
/**
* 在ArrayList末尾添加元素
* @param e 所添加的元素
*/
public void add(E e) {
array[size] = e;
size++;
}
/**
* 在指定位置添加元素
* @param index 索引
* @param e 添加元素
*/
public void add(int index, E e) {
this.automaticExpansion();
int s = size;
E[] temp = (E[]) new Object[size - index + 1];
for (int i = 0; s > index; s--) {
temp[i] = array[index + i];
i++;
}
array[index] = e;
size++;
s = size - index;
for (int x = 0; s > 0; s--) {
array[index + 1 + x] = temp[x];
x++;
}
}
/**
* 删除指定位置的元素,并返回布尔值。该布尔值代表是否成功
* @param index 指定的位置
* @return 返回是否成功的信息
*/
public boolean delete(int index) {
boolean flag=false;
for(int i=0;size-index>i;i++) {
if(!(index+i+1==size)) {
array[index+i]=array[index+i+1];
}else {
array[index+i]=null;
}
}
size--;
System.out.println(array);
return flag;
}
/**
* 修改指定位置的元素内容
* @param index 位置索引
* @param e 修改元素
*/
public void set(int index,E e) {
array[index] =e;
}
/**
* 获取指定位置的元素
* @param index 位置索引
* @return 返回的元素
*/
public E get(int index) {
E temp=array[index];
return temp;
}
}