/**
* java 模拟数组
* @author zm
*/
public class MyArray {
private int size; // 实际个数
private int[] arr;
private int max; // 数组最大长度
public MyArray(){
arr = new int[10];
max = 10;
}
public MyArray(int size){
arr = new int[size];
max = size;
}
// 尾部插入数据
public void insert(int val){
if(size < max){
arr[size] = val;
size ++;
}else{
throw new RuntimeException("超出数组长度,不能添加");
}
}
// 展示数组内数据
public void display(){
if(this.size > 0){
System.out.print("[");
for(int i=0; i<size; i++){
System.out.print(arr[i] +" ");
}
System.out.print("]");
}else{
System.out.print("[]");
}
}
// 根据数值查找所在数组内的角标
public int searchByVal(int val){
if(this.size > 0){
int i ;
for(i=0; i<size; i++){
if(arr[i] == val){
break;
}
}
if(i == size){
return -1;
}else{
return i;
}
}else{
throw new RuntimeException("数组为空");
}
}
// 根据角标查找数组内的数据
public int searchByIndex(int index){
if(this.size > 0){
if(index >= size || index <0){
throw new RuntimeException("角标越界");
}
return arr[index];
}else{
throw new RuntimeException("数组为空");
}
}
// 删除指定角标内的数据
public void delete(int index){
if(this.size > 0){
if(index >= size || index <0){
throw new RuntimeException("角标越界");
}
// 数据前移
for(int i = index; i<size-1; i++){// i =0 i < z; i++
arr[i] = arr[i + 1];
}
size --;
System.out.println(size);
}else{
throw new RuntimeException("数组为空");
}
}
// 更新数组元素
public void change(int index, int value){
if(this.size > 0){
if(index >= size || index <0){
throw new RuntimeException("角标越界");
}
// 数据前移
arr[index] = value;
}else{
throw new RuntimeException("数组为空");
}
}
public static void main(String[] args) {
MyArray array = new MyArray(3);
array.insert(1);
array.insert(2);
array.insert(3);
//array.insert(4);
array.display();
/*int index = array.searchByVal(5);
System.out.println(index);*/
/*int value = array.searchByIndex(2);
System.out.println(value);*/
/*array.delete(1);
array.display();*/
array.change(0, 4);
array.display();
}
}