public class ArrayList01 {
//数据结构:数组
private Object[] elementData;
//list中的元素个数
private int size;
public int size(){
return this.size;
}
//构造函数
public ArrayList01(){
this(10);
}
public ArrayList01(int initialCapacity){
if(initialCapacity<0){
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
this.elementData=new Object[initialCapacity];
}
//获取
public Object get(int index){
rangeCheck(index);
return elementData[index];
}
//修改
public void set(int index,Object obj){
rangeCheck(index);
elementData[index]=obj;
}
//添加
public void add(Object obj){
ensureCapacity();
elementData[size++]=obj;
}
public void add(int index,Object obj){
rangeCheck(index);
ensureCapacity();
System.arraycopy(elementData,index,elementData,index+1,size-index);
elementData[index]=obj;
size++;
}
//删除
public void remove(int index){
rangeCheck(index);
int numMoved=size-index-1;
if(numMoved>0){
System.arraycopy(elementData,index+1,elementData,index,numMoved);
}
elementData[--size]=null;
}
public void remove(Object obj){
for(int i=0;i<size;i++){
if(get(i).equals(obj)){
remove(i);
}
}
}
//检查容量
private void ensureCapacity(){
if(size==elementData.length){
Object[] newArray=new Object[size*2+1];
System.arraycopy(elementData,0,newArray,0,elementData.length);
elementData=newArray;
}
}
//检查索引
private void rangeCheck(int index){
if(index<0||index>=size){
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
ArrayList01 list=new ArrayList01(5);
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
list.add("eee");
list.add("bbb");
list.add("ggg");
list.add(1,"ss");
list.remove(0);
list.set(0,"000");
System.out.println(list.size());
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
}
仿源码写一个简单的ArrayList
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 成长记录-连载(三十六) ——我的第一篇五千字长文,说了什么,你一定想不到 并不是不想每天写公众号,而是之前思考怎...
- 又一场惨痛的地震来到了祖国大陆, 缅怀逝去的同胞, 为伤者祈福之际, 作为一个每天都在办公楼内的上班族,不免再次思...