源码
package com.java.ch_6_Collection_Map.demo3;
import java.util.Arrays;
// 自己写一个 ArrayList 有泛型
public class MyArrayList<T> {
//定义一个数组
private Object[] elementList;
//定义初始长度
private final static int z = 8;
private int size;
//创建一个arraylist 构造方法
public void ArrList(){
elementList = new Object[z];
System.out.println(Arrays.toString(elementList));
}
//添加元素
public void add(T e){
//判断 数组有没有满了
if (size >= elementList.length){
//扩容
Object[] newelementList = new Object[(int)(size*1.5)];
//将原来的数组数据装到新的数组中
for (int i = 0; i < elementList.length; i++) {
newelementList[i] = elementList[i];
}
//将新的数组赋值给 elementList
elementList = newelementList;
}
elementList[size++] = e;
}
//删除元素
public void delete(int index){
int newdelete = size-index-1;
if (newdelete>0){
System.arraycopy(elementList,index+1,elementList,index,newdelete);
}
elementList[--size] = null;
}
//获取元素
public Object get(int index){
return elementList[index];
}
//改变指定位置元素
public void set(int index,T e){
elementList[index] = e;
}
//获取长度
public int size(){
return size;
}
@Override
public String toString() {
return "elementList=" + Arrays.toString(elementList);
}
public static void main(String[] args) {
MyArrayList<String> list = new MyArrayList();
System.out.println("空数组:");
list.ArrList();
System.out.println("插入数据:");
for (int i=0;i<=20;i++){
list.add("a"+i);
}
System.out.println(list);
System.out.println("指定下标删除数据:");
list.delete(21);
System.out.println(list);
System.out.println("指定下标拿某个数据:");
System.out.println(list.get(0));
System.out.println("指定下标修改指定数据:");
list.set(10,"哈哈哈");
System.out.println(list);
System.out.println("有数据的数组长度:");
System.out.print(list.size);
}
}