代码
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]