参考ArrayList源码,实现MyArrayList(增删改查)
代码如下:
package test0725.demo1;
import java.util.Arrays;
/**
* MyArrayList类
* 参考ArrayList源码,实现MyArrayList(增删改查)
*/
public class MyArrayList {
private static int existLength = 0; //当前数组已有长度
private static Object[] objArray = new Object[existLength]; //创建一个可变数组
//增加元素(利用可变数组实现一次加入多个元素)
public void add(Object... obj) {
Object[] tempArray = objArray; //保存旧数组
existLength += obj.length; //新数组长度
objArray = new Object[existLength]; //新数组
//把旧数组的值赋给新数组
for (int i = 0; i < tempArray.length; i++) {
objArray[i] = tempArray[i];
}
//把插入的值赋给新数组
for (int i = tempArray.length,j = 0; i < objArray.length; i++,j++) {
objArray[i] = obj[j];
}
System.out.println("添加成功!");
}
//删除元素
public void remove(int index) {
if(checkIndex(index)){
Object[] tempArray = objArray;
existLength -= 1;
objArray = new Object[existLength];
for (int i = 0; i < objArray.length; i++) {
if(i < index){
objArray[i] = tempArray[i];
} else if(i >= index){
objArray[i] = tempArray[i + 1];
}
}
System.out.println("删除成功!");
} else {
System.out.println("没有要删除元素的索引,删除失败!");
}
}
//修改元素
public void set(int index,Object newObj) {
if(checkIndex(index)){
objArray[index] = newObj;
System.out.println("修改成功!");
} else {
System.out.println("没有要修改元素的索引,修改失败!");
}
}
//查询元素
public void query(int index) {
if(checkIndex(index)){
System.out.println("查询成功!查询的元素的值为:" + objArray[index]);
} else {
System.out.println("没有要查询元素的索引,查询失败!");
}
}
//判断数组长度是否足够
public static boolean checkIndex(int index){
if(index < existLength){
return true;
}
return false;
}
//打印数组
public void showArray(){
System.out.println("此时的数组为:");
System.out.println(Arrays.toString(objArray));
System.out.println("数组的长度为:" + objArray.length);
}
}
package test0725.demo1;
/**
* MyArrayList测试类
*/
public class TestArrayList {
public static void main(String[] args) {
MyArrayList list = new MyArrayList();
list.add("Java",17436118,"北榛"); //增
list.remove(1); //删
list.set(0,"Java全栈"); //改
list.query(1); //查
list.showArray(); //打印新数组
}
}
打印结果:
添加成功!
删除成功!
修改成功!
查询成功!查询的元素的值为:北榛
此时的数组为:
[Java全栈, 北榛]
数组的长度为:2