定义一个数组操作类(Array),里面定义了一个整型数组,由外部传入数组的大小,可以实现数据的保存以及输出

标题定义一个数组操作类(Array),里面定义了一个整型数组,由外部传入数组的大小,可以实现数据的保存以及输出

即:所有的大小由程序指定,并在此基础上实现以下的两个子类:
• 排序类:可以对数组进行排序的显示
• 反转类:可以将数组的内容反转显示

  1. 基础类
class Array{
    private int []data;
    private int foot; // 作为保存的脚标
    public Array(int len){// 实例化本类对象时必须设置数组大小
        if(len <= 0){
            this.data = new int[1]; // 至少维持1个大小的数组
        }else{
            this.data = new int[len];// 根据传人的大小定义数组长度
        }
    }
    public boolean add(int num){//如果保存成功返回true,否则是false
        if(this.foot<this.data.length){//还有空间可以保存数据
            this.data[this.foot ++] = num; // 保存数据的同时改变foot的内容
            return true;
        }
        return false;
    }
    public int[] getData(){ // 返回全部数据
        return this.data;
    }
    public void inc(int size){ // 扩充数组大小,在已有数据基础上扩充
        if(size>0){
            int[] newData = new int[this.data.length+size];
            System.arraycopy(this.data,0,newData,0,this.data.length);
            this.data = newData;// 改变引用
        }
    }
}
public class arrayOperation{
    public static void main(String args[]){
        Array arr = new Array(5);//开始有5个元素
        System.out.println(arr.add(90));
        System.out.println(arr.add(10));
        System.out.println(arr.add(100));
        System.out.println(arr.add(60));
        System.out.println(arr.add(1));
        //if(arr.add(99) == false){
            arr.inc(3);// 扩充容量
            System.out.println(arr.add(20));
            System.out.println(arr.add(30));
            System.out.println(arr.add(70));
        //}
        //int temp [] = arr.getData();
        for(int x = 0;x<arr.getData().length;x++){
            System.out.println(arr.getData()[x]+",");
        }
    }
}
  1. 排序数组类
    对于排序的操作从本质上来讲,与数组Array类的操作区别不大,只不过它最后返回的结果应该是排序的
    getData()方法负责返回结果,但是这个结果没有排序,不过方法名称好用,利用覆写来解决此类问题
    范例:定义排序数组子类
class Array{
    private int []data;
    private int foot; // 作为保存的脚标
    public Array(int len){// 实例化本类对象时必须设置数组大小
        if(len <= 0){
            this.data = new int[1]; // 至少维持1个大小的数组
        }else{
            this.data = new int[len];// 根据传人的大小定义数组长度
        }
    }
    public boolean add(int num){//如果保存成功返回true,否则是false
        if(this.foot<this.data.length){//还有空间可以保存数据
            this.data[this.foot ++] = num; // 保存数据的同时改变foot的内容
            return true;
        }
        return false;
    }
    public int[] getData(){ // 返回全部数据
        return this.data;
    }
    public void inc(int size){ // 扩充数组大小,在已有数据基础上扩充
        if(size>0){
            int[] newData = new int[this.data.length+size];
            System.arraycopy(this.data,0,newData,0,this.data.length);
            this.data = newData;// 改变引用
        }
    }
}
class SortArray extends Array{ // 排序子类
    public SortArray(int len){
        super(len);
    }
    public int[] getData(){
        java.util.Array.sort(super.getData());
        return super.getData();
    }
}
public class arrayOperation{
    public static void main(String args[]){
        SortArray arr = new SortArray(5);//开始有5个元素
        System.out.println(arr.add(90));
        System.out.println(arr.add(10));
        System.out.println(arr.add(100));
        System.out.println(arr.add(60));
        System.out.println(arr.add(1));
        //if(arr.add(99) == false){
            arr.inc(3);// 扩充容量
            System.out.println(arr.add(20));
            System.out.println(arr.add(30));
            System.out.println(arr.add(70));
        //}
        //int temp [] = arr.getData();
        for(int x = 0;x<arr.getData().length;x++){
            System.out.println(arr.getData()[x]+",");
        }
    }
}
  1. 反转子类
    只是在使用getData()方法的时候返回的是一个反转后的结果
    范例:定义排序数组子类
class Array{
    private int []data;
    private int foot; // 作为保存的脚标
    public Array(int len){// 实例化本类对象时必须设置数组大小
        if(len <= 0){
            this.data = new int[1]; // 至少维持1个大小的数组
        }else{
            this.data = new int[len];// 根据传人的大小定义数组长度
        }
    }
    public boolean add(int num){//如果保存成功返回true,否则是false
        if(this.foot<this.data.length){//还有空间可以保存数据
            this.data[this.foot ++] = num; // 保存数据的同时改变foot的内容
            return true;
        }
        return false;
    }
    public int[] getData(){ // 返回全部数据
        return this.data;
    }
    public void inc(int size){ // 扩充数组大小,在已有数据基础上扩充
        if(size>0){
            int[] newData = new int[this.data.length+size];
            System.arraycopy(this.data,0,newData,0,this.data.length);
            this.data = newData;// 改变引用
        }
    }
}
class SortArray extends Array{ // 排序子类
    public SortArray(int len){
        super(len);
    }
    public int[] getData(){
        java.util.Array.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];
            super.getData()[tail] = temp;
            head ++;
            tail--;
        }
        return super.getData();
    }
}
public class arrayOperation{
    public static void main(String args[]){
        ReverseArray arr = new ReverseArray(5);//开始有5个元素
        System.out.println(arr.add(90));
        System.out.println(arr.add(10));
        System.out.println(arr.add(100));
        System.out.println(arr.add(60));
        System.out.println(arr.add(1));
        arr.inc(3);// 扩充容量
        System.out.println(arr.add(20));
        System.out.println(arr.add(30));
        System.out.println(arr.add(70));
        int temp[] = arr.getData();
        for(int x = 0;x<temp.length;x++){
            System.out.println(temp[x]+",");
        }
    }
}
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值