自己实现一个数组,详情看代码
public class MyArray {
private long arr[];
/**
* actualsubSize实际下标大小,默认为0
*/
private int actualsubSize;
/**
* flag用来标记操作是否成功
*/
private boolean flag=false;
public MyArray(){
arr=new long[50];
}
public MyArray(int length){
arr=new long[length];
}
/**
* 1.添加数组元素
*/
public void add(long value){
arr[actualsubSize]=value;
actualsubSize++;
}
/**
* 2.显示数据元素例如{1,2,3...}
*/
public void display(){
System.out.print("{");
for(int i=0;i<actualsubSize;i++){
if(i!=actualsubSize-1)
System.out.print(arr[i]+",");
else
System.out.print(arr[i]+"}\n");
}
}
/**
* 3.根据下标查找数据,返回数据,越界报错
*/
public long displayDataByIndex(int index){
if(index<0 || index>actualsubSize-1){
throw new ArrayIndexOutOfBoundsException();
}else
return arr[index];
}
/**
* 4.根据数据查下标,返回下标位置,没找到返回-1
*/
public int displayIndexByData(long value){
int i;
for(i=0;i<actualsubSize;i++){
if(value==arr[i]) {
break;
}
}
if (i==actualsubSize)
i=-1;
return i;
}
/**
* 5.删除数组中某一位置的元素(通过下标),删除成功返回true,失败返回false,越界报错
*/
public boolean delete(int index){
if (index<0 || index>actualsubSize){
throw new ArrayIndexOutOfBoundsException();
}else {
for(int i=index;i<actualsubSize;i++){
arr[i]=arr[i+1];
}
flag=true;
actualsubSize-=1;
return flag;
}
}
/**
* 6.根据元素值删除数组中的元素,若无该值则失败,返回false,否则删除成功返回true,
*/
public boolean deleteByData(long value){
int index=this.displayIndexByData(value);
if (index!=-1){
this.delete(this.displayIndexByData(value));
flag=true;
}else {
flag=false;
}
return flag;
}
/**
* 7.更新数组中元素的值(根据下标),成功返回true,失败返回false,越界报错
*/
public boolean update(int index,long value){
if(index<0 || index>actualsubSize){
throw new ArrayIndexOutOfBoundsException();
}else {
arr[index]=value;
flag=true;
}
return flag;
}
}
public class test {
public static void main(String[] args) {
MyArray arr=new MyArray();
arr.add(0);
arr.add(10);
arr.add(20);
arr.add(30);
arr.display();
System.out.println(arr.displayDataByIndex(3));
System.out.println(arr.displayIndexByData(30));
System.out.println(arr.delete(0));
arr.display();
System.out.println(arr.update(0,100));
arr.display();
System.out.println(arr.deleteByData(100));
arr.display();
}
}