手工实现ArrayList_最简化方式_增加泛型

代码

package 容器Generic.cn.sxt.mycollection;

/**
 * @author 邓雪松 (づ ̄ 3 ̄)づ)
 * @create 2021-11-19-21-37
 * 自定义实现ArrayList,体会底层原理
 */
public class SxtArrayList {
    //核心数组:elementData 数组
    private Object[] elementData;
    private int size;//表示我们数组中有多少个元素

    //默认长度
    private static final int DEFALT_CAPACITY = 10;

    //默认构造器
    public SxtArrayList(){
        elementData=new Object[DEFALT_CAPACITY];//默认数组长度是10
    }
    //你传多少是多少
    public SxtArrayList(int capacity){
        elementData = new Object[capacity];
    }
    //模仿add方法
    public void add(Object obj){
        elementData[size++] = obj;//注意这里的size
    }
    //重写toString()
    public String toString(){
        StringBuilder sb = new StringBuilder();
        //打印格式类似于:[a,b,c]
        sb.append("[");
        for(int i=0;i<size;i++){
            sb.append(elementData[i]+",");
        }
        //将最后的逗号改为]
        sb.setCharAt(sb.length()-1,']');
        return sb.toString();
    }
    //main方法中做测试
    public static void main(String[] args) {
        SxtArrayList s1 = new SxtArrayList();
        s1.add("aa");
        s1.add("bb");
        System.out.println(s1);
    }
}

加了泛型的

package 容器Generic.cn.sxt.mycollection;

/**
 * @author 邓雪松 (づ ̄ 3 ̄)づ)
 * @create 2021-11-19-21-37
 * 自定义实现ArrayList,体会底层原理
 * 添加泛型
 */
public class SxtArrayList02<E> {
    //核心数组:elementData 数组
    private Object[] elementData;
    private int size;//表示我们数组中有多少个元素

    //默认长度
    private static final int DEFALT_CAPACITY = 10;

    //默认构造器
    public SxtArrayList02(){
        elementData=new Object[DEFALT_CAPACITY];//默认数组长度是10
    }
    //你传多少是多少
    public SxtArrayList02(int capacity){
        elementData = new Object[capacity];
    }
    //模仿add方法
    public void add(E element){
        elementData[size++] = element;//注意这里的size
    }
    //重写toString()
    public String toString(){
        StringBuilder sb = new StringBuilder();
        //打印格式类似于:[a,b,c]
        sb.append("[");
        for(int i=0;i<size;i++){
            sb.append(elementData[i]+",");
        }
        //将最后的逗号改为]
        sb.setCharAt(sb.length()-1,']');
        return sb.toString();
    }
    //main方法中做测试
    public static void main(String[] args) {
        SxtArrayList02 s1 = new SxtArrayList02();
        s1.add("aa");
        s1.add("bb");
        System.out.println(s1);
    }
}

运行结果

[aa,bb]
上一篇:JUC之集合中的线程安全问题


下一篇:线性表-数组