目的:
练习、复习容器、复习之前的知识、练手敲更多的代码
简单的ArrayList底层实现代码:
package com.MyCollection;
/**
* 自定义实现一个ArrayList,体会底层原理
* @author Lucifer
*/
public class LcfArrayList {
/*ArrayList底层有一个元素数组,用它来存储内容*/
private Object[] elementData; //用来存储我们的内容的
/*数组里面又多少元素---相当于计数器*/
private int size;
/*定义一个常量作为数组长度的默认长度*/
private static final int DEFAULT_CAPACITY = 10;
/*定义一个构造器,创建数组的时候给它默认长度*/
public LcfArrayList(){
/*为数组新建对象*/
elementData = new Object[DEFAULT_CAPACITY]; //将新建的Object对象赋值给Object数组名
/*
什么都不加上去的时候默认就是elementData
*/
}
/*第二个构造器像之前一样---传数字,封装方法*/
public LcfArrayList(int capacity){
/*数组长度=传入的数值---定义了自己的一个小内容*/
elementData = new Object[capacity];
}
/*在main方法当中做测试*/
public static void main(String[] args) {
/*调用方法创建对象*/
LcfArrayList s1 = new LcfArrayList(20); //调用的时候就会创建一个默认数组,如果不传值就是默认的10
}
}
/*
这样就定义了一个最基本的数组
内容
长度
完成了一个简单的ArrayList实现代码
*/
再简单的基础上加一些方法:
package com.MyCollection;
/**
* 自定义实现一个ArrayList,体会底层原理,无泛型版本
* @author Lucifer
*/
public class LcfArrayList {
/*ArrayList底层有一个元素数组,用它来存储内容*/
private Object[] elementData; //用来存储我们的内容的
/*数组里面有多少元素---相当于计数器*/
private int size;
/*定义一个常量作为数组长度的默认长度*/
private static final int DEFAULT_CAPACITY = 10;
/*定义一个构造器,创建数组的时候给它默认长度*/
public LcfArrayList(){
/*为数组新建对象*/
elementData = new Object[DEFAULT_CAPACITY]; //将新建的Object对象赋值给Object数组名
/*
什么都不加上去的时候默认就是elementData
*/
}
/*第二个构造器像之前一样---传数字,封装方法*/
public LcfArrayList(int capacity){
/*数组长度=传入的数值---定义了自己的一个小内容*/
elementData = new Object[capacity];
}
/*给这个类加一个add方法---这是一个简单的add方法,不考虑复杂的情况*/
public void add(Object obj){
elementData[size++] = obj; //传入的值赋给新元素索引自增
}
/*希望输出的结果可视化,重写toString方法*/