创建一个以数组为底层的容器 具有增删改查的功能
public class MyArrayList {
private Object[] data;//创建数组
private int total=0;//数组有效元素个数
public MyArrayList(){
data=new Object[10];//默认初始化大小为10
}
//增添元素
public void add(Object obj){
if (total>=data.length){//如果数组满了 扩容后添加
data=Arrays.copyOf(data,data.length*2);//扩容 为原数组长度二倍
}
data[total++]=obj;
}
//查看有多少个元素
public int size(){
return total;
}
//获取第index元素位置
public Object get(int index){
if (index<0||index>total){//判断index是否合理
throw new IndexOutOfBoundsException(index+"不合理");
}
return data[index];
}
//查找obj在当前容器中的索引 如果没有 返回-1
public int indexOf(Object obj){
int index=-1;
if (obj==null){
for (int i=0;i<total;i++){
if (obj==data[i]) {
index = i;
break;
}
}
}else {
for (int i=0;i<total;i++){
if (obj.equals(data[i])) {
index = i;
break;
}
}
}
return index;
}
//删除
public void delete(Object obj){
//首先查找是否含有这个元素
if (indexOf(obj)==-1){
System.out.println("容器中没有这个元素");
}else {
System.arraycopy(data,indexOf(obj)+1,data,indexOf(obj),total-indexOf(obj)-1);
data[--total]=null;
}
}
//修改元素 只修改查找到的第一个
public void set(Object older,Object newer){
int index=indexOf(older);
if (index!=-1){
data[index]=newer;
}
}
public void setAll(Object older,Object newer){
for (int i = 0; i < total; i++) {
int index=indexOf(older);
if (index!=-1){
data[index]=newer;
}
}
}
}
测试:
public class TestMyArrayList {
public static void main(String[] args) {
MyArrayList my=new MyArrayList();
for (int i=0;i<=120;i++){
my.add("$$");
}
my.add("yyx");
System.out.println(my.size());
my.delete("$$");
my.set("$$","hello");
my.setAll("$$","dududu");
for (int i=0;i<my.size();i++){
System.out.println(my.get(i));
}
}
}
感谢段段