目录
一、ArrayList类简介:
1、类名:MyArrayList;
属性:容器(elementData),
元素个数(size),
默认初始长度(DEFAULT_LENGTH)
2、需要实现的方法:
添加:add()
修改:set()
查询:get()
删除:remove()
元素个数:size()
是否为空:isEmpty()
二:代码实现
1、创建ArrayList类
public class MyArrayList<E>(){
//容器
public Object[] elementData;
//元素个数
public int size;
//默认长度
public static final int DEFAULT_LENGTH = 10;
//创建无参构造
public MyArrayList(){
//初始化elementData数组,长度为10;
elementData = new Object[DEFAULT_LENGTH];
}
//创建一个有参构造
public MyArrayList(int length){
if(length<0){
throw new RuntimeException("索引输入有误!");
}else if (length == 0){
elementData = new Object[DEFAULT_LENGTH];
}else{
elementData = new Object[length];
}
// 添加:add()
// 修改:set()
// 查询:get()
// 删除:remove()
// 元素个数:size()
// 是否为空:isEmpty()
}
2、实现添加方法
public void add(Object obj){
//首先判断数组是否已满
if(size == elementData.length){
//进行扩容,扩容1.5倍
Object[] newArray = new Object[elementData.length+(elementData.length>>1)];
System.arraycopy(elementData,0,newArray,0,elementData.length);
element = newArray;
}
elementData[size++]=obj
}
3、实现修改方法
//实现修改方法
public void set(int index,E element){
//首先判断是否是合法的索引
if(index<0 || index>size-1){
throw new RuntimeException("输入索引不合法!");
}
//否则将传递过来的参数直接赋值
elementData[index]=element;
}
4、实现查询方法
//查询方法
public E get(int index){
if(index<0||index>size-1){
throw new RuntimeException("输入索引不合法!");
}
return (E)elementData[index];
}
5、实现删除方法
//删除用到方法的重载(通过索引删除和通过元素值删除)
public boolean remove1(E element){
//通过元素值删除,首先进行数组的遍历
boolean isFlag = false;
for(int i = 0;i<size-1;i++){
if(element.equals(elementData[i])){
remove1(i);
isFlag=true;
}
}
return isFlag;
}
//通过索引值删除
public E remove1(int index){
if(index<0||index>size-1){
throw new RuntimeException("数组输入不合法:"+index);
}
Object res = elementData[index];
int num = size-1-index;
System.arraycopy(elementData,index+1,elementData,index,num);
elementData[--size]=null;
return (E)res;
}
6.获取元素个数
public int size(){
return size;
}
7、判断是否为空
public boolean isEmpty(){
returun size == 0;
}