所有关于数组的操作 如添加元素,删除元素,替换指定位置元素的算法思想,共同点是
都需要使用到新的数组,
然后复制元素到新的数组
最后需要用新数组替换旧数组。
替换数组中的指定元素,直接替换就可以。
import java.util.Arrays;
import java.util.Scanner;
import java.util.ArrayList;
public class ObjectArray{
public static void main(String[] args){
MyArray array=new MyArray();
//调用MyArray中的size方法
System.out.println("初始数组长度");
System.out.println(array.size());
//调用MyArray中的add方法,添加元素
for(int i=10;i<20;i++){
array.add(i);
}
System.out.println("添加完后的元素和长度");
array.show();
System.out.println(array.size());
//删除元素第10个
array.del(9);
System.out.println("删除后的元素和长度");
array.show();
System.out.println(array.size());
//获取某个元素
System.out.println("获取第三个元素");
array.get(2);
//元素插入指定位置
array.insert(2,100);
array.show();
//替换指定位置的元素
System.out.println("替换指定位置的元素");
array.set(3,20);
array.show();
}
}
class MyArray{
//存储数据的数组
private int[] array;
public MyArray(){
array=new int[]{};
}//返回长度
public int size(){
return array.length;
}
//元素添加
public void add(int value){
int[] newarray=new int[array.length+1];
//复制旧数组的数据到新的数组
for(int i=0;i<array.length;i++){
newarray[i]=array[i];
}
//将元素添加到新数组最后一个位置
newarray[array.length]=value;
//新数组替换旧数组
array=newarray;
}
//方法返回所有元素
public void show(){
System.out.println(Arrays.toString(array));
}
//方法删除数组指定下标元素
public void del(int index){
int[] newarray=new int[array.length-1];
for (int i = 0;i<newarray.length; i++) {
if (i < index) {
newarray[i] = array[i];
} else {
newarray[i] = array[i + 1];
}
}
// 新的数组替换旧的数组;
array = newarray;
}
//获取某个元素
public void get(int index){
System.out.println(array[index]);
}
//元素插入数组指定位置,index位置,value要插入的元素
public void insert(int index,int value){
int[] newarray=new int[array.length+1];
for(int i=0;i<array.length;i++){
if(i<index){
newarray[i]=array[i];
}else if(i>index){
newarray[i]=array[i];
}else{
newarray[index]=value;
}
}
//新数组替换旧的数组
array=newarray;
}
//替换数组中指定位置的元素
public void set(int index,int value){
if(index>array.length||index<(-array.length)){
System.out.println("下标越界");
}
else{
array[index]=value;
}
}
}