8.23 数组操作

发布时间 2023-06-08 22:03:13作者: 盘思动

建立一个可以实现整型数组的操作类(Array),而后在里面可以操作的数组的大小由外部来决定, 而后在Array类里面需要提供有数组的如下处理:进行数据的增加(如果数据满了则无法增加)、可以实现数组的容量扩充、取得数组全部内容。 完成之后在此基础上再派生出两个子类: · 数组排序类:返回的数据必须是排序后的结果; · 数组反转类:可以实现内容的首尾交换。

class Array {
    private int [] data;
    private int foot;// 进行数组索引控制
    public Array(int len){
        if(len > 0){
            this.data = new int[len];
        } else {
            this.data = new int[1];
        }
    }
    
    // 实现数组的容量扩充,给出的是扩充大小,实际大小,
    public void increment(int num){
        int newData[] = new int[this.data.length + num];
        System.arraycopy(this.data,0,newData,0,this.data.length);
        this.data = newData;
    }

    public boolean add(int num){// 数据增加赋值;
        if(this.foot < this.data.length){
            this.data[this.foot++] = num;
            return true;
        }
        return false;
    }

    public int[] getData(){
        return this.data;
    }

}

class SortArray extends Array {
    public SortArray(int len){
        super(len);
    }
    public int[] getData(){// 获得排序结果
        java.util.Arrays.sort(super.getData());// 排序
        return super.getData();
    }
}

class ReverseArray extends Array {
    public ReverseArray(int len){
        super(len);
    }

    public int[] getData(){// 获得排序结果
        int center = super.getData().length / 2;
        int head = 0;
        int tail = super.getData().length - 1;
        for(int x = 0;x < center;x++){

            int temp = super.getData()[head];
            super.getData()[head] = super.getData()[tail];// 将head,tail位置的数组颠倒!!!
            super.getData()[tail] = temp;

            head++;
            tail--;
        }
        return super.getData();
    }
}


public class HelloWorld {
	public static void main(String args[]) {
        Array arr = new Array(5);
        //SortArray arr = new SortArray(5);
        //ReverseArray arr = new ReverseArray(5);

        System.out.println(arr.add(1));
        System.out.println(arr.add(12));
        System.out.println(arr.add(143));
        System.out.println(arr.add(153));
        System.out.println(arr.add(12));
        arr.increment(3);
        System.out.println(arr.add(91));
        System.out.println(arr.add(92));
        System.out.println(arr.add(93));

        int result[] = arr.getData();
        for(int temp : result){
            System.out.print(temp + ",");
        }
	}
}