package dataStructures.list;
public class MyArray {
int[] array;
public MyArray() {
array=new int[0];
}
/**
* 在数组末尾插入一个元素
* @param element
*/
public void insertLast(int element) {
//先创建一个新的数值,比原数值的长度大于1
int[] newArray=new int[array.length+1];
//判断原数值是否为空
if(!isEmpty()) {
for(int i=0;i<array.length;i++){
//把原数组中的值赋值给新数组
newArray[i]=array[i];
}
}
//把新增的元素赋值给新数组的最后一位
newArray[newArray.length-1]=element;
//用新数组替换原数组(引用替换)
array=newArray;
}
public void insert(int index,int element) {
if(index<0 || index>array.length-1) {
throw new IndexOutOfBoundsException("下标越界了");
}
//新建一个长度大于原数组长度1位的新数组
int[] newArray=new int[array.length+1];
//循环原数组
for(int i=0;i<array.length;i++){
//如果i小于新增的下标,则复制原数组元素至新数组中
if(i<index) {
newArray[i]=array[i];
}else {//如果i大于等于新增下标,则把原数组元素i位元素复制至新数组i+1位
newArray[i+1]=array[i];
}
}
//新数组index位的元素赋值为element
newArray[index]=element;
//新数组替换原数组
array=newArray;
}
/**
* 根据下标删除数组元素
* @param index 下标
*/
public void remove(int index) {
if(index<0 || index>array.length-1) {
throw new IndexOutOfBoundsException("下标越界了");
}
//新建一个数组比原数组长度小1
int[] newArray =new int[array.length-1];
for(int i=0;i<array.length-1;i++) {
//如果下标小于需要删除的下标,那么复制原数组的数据到新数组中
if(i<index) {
newArray[i]=array[i];
}else {//如果下标大于等于需要删除的下标,则需跳过需要删除的下标,把原数组后面的数据复制到新数组
newArray[i]=array[i+1];
}
}
//新数组替换原数组
array=newArray;
}
/**
* 根据下标更新数组的元素
* @param index 下标
* @param element 新元素
*/
public void update(int index,int element) {
if(index<0 || index>array.length-1) {
throw new IndexOutOfBoundsException("下标越界了");
}
array[index]=element;
}
/**
* 根据元素获取下标
* @param element
* @return 如果没找到,则返回-1
*/
public int getIndex(int element) {
if(!isEmpty()) {
for (int i = 0; i < array.length; i++) {
if(array[i]==element) {
return i;
}
}
}
return -1;
}
/**
* 根据下标获取数组内容
* @param index 下表索引
* @return
*/
public int getValue(int index) {
if(index<0 || index>array.length-1) {
throw new IndexOutOfBoundsException("下标越界了");
}
return array[index];
}
public boolean isEmpty() {
return array.length==0;
}
public void show() {
if (!isEmpty()) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]+" ");
}
}
System.out.println();
}
public static void main(String[] args) {
MyArray myArray=new MyArray();
myArray.insertLast(1);
myArray.insertLast(2);
myArray.insertLast(3);
myArray.insertLast(4);
myArray.insert(3, 8);
myArray.show();
System.out.println(myArray.getValue(1));
myArray.remove(1);
myArray.show();
myArray.update(1, 9);
myArray.show();
System.out.println(myArray.getIndex(8));
}
}
数组的增删改查操作实现
最新推荐文章于 2022-04-19 15:53:44 发布