import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class MyArrayList<T> {
private int AMOUNT = 10; //初始容量
private T[] myList; //底层依赖数组
private int size; //集合元素个数
public MyArrayList() {
initList();
}
//初始化
public void initList() {
myList = (T[]) new Object[AMOUNT];
size = 0;
}
//判断是否为空
public boolean listEmpty() {
if (size == 0) {
return true;
}
return false;
}
//清理元素
public boolean clearList() {
myList = null;
size = 0;
return true;
}
//根据下标获取元素
public T get(int i) {
if (i < 0 || i > size) {
throw new ArrayIndexOutOfBoundsException();
}
return myList[i];
}
//添加元素
public void add(T a) {
add(size, a);
}
//添加元素到指定位置,如果不够则扩容
public void add(int i, T a) {
if (i < 0 || i > size) {
throw new ArrayIndexOutOfBoundsException();
}
//数组已满,则扩容
if (i == myList.length) {
largeList();
}
myList[i] = a;
size++;
}
//扩容1.5倍
public void largeList() {
myList = Arrays.copyOf(myList, size + size / 2);
}
//设置指定位置的元素值
public T set(T a, int i) {
if (i < 0 || i >= size) {
throw new ArrayIndexOutOfBoundsException();
}
T old = myList[i];
myList[i] = a;
return old;
}
//获取长度
public int size() {
return size;
}
//删除指定位置元素
public T delete(int i) {
if (i < 0 || i >= size) {
throw new ArrayIndexOutOfBoundsException();
}
T old = myList[i];
//整体前移,i位置后面的值
for (int k = i; k < size; k++) {
myList[k] = myList[k+1];
}
//集合元素个数减1
size--;
return old;
}
@Override
public String toString() {
String s = "[" ;
for (int i = 0; i < size; i++) {
s = s + myList[i];
if (i != size -1) {
s = s + ",";
}
}
s += "]";
return s;
}
//main方法
public static void main(String[] args) {
//初始化集合
List<String> list = new ArrayList<String>();
//向集合中添加11个元素
list.add("zs");
list.add("ls");
System.out.println(list);
//自定义集合测试
MyArrayList<String> list2 = new MyArrayList<>();
boolean flag = list2.listEmpty();
System.out.println("flag:" + flag);
list2.add("ww");
list2.add("zl");
//清理容器
//list2.clearList();
//获取指定索引上的元素值
String s = list2.get(1);
System.out.println("s:" + s);
System.out.println(list2);
}
}
05-24
121
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
08-27
489
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)