面向对象之封装

面向对象之封装——封装实现一个超级数组,将数组中常用的业务功能封装在超级数组类。

package com.javasc.review; //InitSupperArray是一个拥有常见普通数组没有的一些功能,但是他的不足很明显,不能装其他类型的数据。这点以后改正; //超级数组其实就是对常见的已有的数组结构进一步的编程,把常见的业务中需要的功能封装起来,此时就形成超级数组这个类,我们使用这个封装好的类去创建对象,那么这些对象就拥有这种属性。 public class InitSupperArray { //由于java规约,我们对类的成员变量使用权限修饰符来修饰,保证此成员变量只能由当前的类访问到; //超级数组由普通数组的封装实现,所以我们对普通的数组进行扩展实现其方法;

//定义一个数组,使用Integer来声明,此时可以返回一个null
private Integer[] nums;
//定义数组的实际长度
private int size;
//定义数组的容量
private int capacity;

//超级数组的无参构造
private InitSupperArray(){
    this(10);
    this.capacity = 10;
}
//超级数组的有参构造
private InitSupperArray(int capacity){
    this.nums = new Integer[capacity];
    this.capacity = capacity;
}


//1.数组的扩容
private void extendCapacity(){
    Integer[] dobbleNumsnew = new Integer[this.capacity*2];
    for (int i = 0; i < nums.length; i++) {
        dobbleNumsnew[i] = nums[i];
    }
    nums = dobbleNumsnew;
    this.capacity = dobbleNumsnew.length;
}

//2.超级数组实现添加元素(尾插法)
private void addToRear(int data){
    if(size == capacity) {
        this.extendCapacity();
    } else {
        nums[size] = data;
        size = size + 1;
    }
}


//3.超级数组查找指定下标位置的元素
private Integer find(int index){
    if (index >= 0 && index < this.capacity){
        System.out.println(nums[index]);
        return nums[index];
    } else {
        return null;
    }
}

//4.删除超级数组中指定下标位置的元素
private void delete(int index) {
    if (index >= 0 && index <= capacity - 1) {
        for (int i = index; i < this.capacity - 1; i++) {
            nums[index] = nums[index + 1];
        }
        nums[this.size - 1] = null;
        this.size--;
    } else {
        System.out.println("下标越界,请注意下标情况!");
    }
}

//5.指定下标插入数据
 private void addToIndex(int index,int data){
    if (size == capacity){
        this.extendCapacity();
    } else {
        if (index >= 0 && index <= size) {
            for (int i = size - 1; i >= index; i--) {
                nums[i+1] = nums[i];
            }
            nums[index] = data;
            this.size = size + 1;
        } else {
            System.out.println("下标越界!");
        }
    }
 }


 //6.超级数组的排序,使用冒泡排序法
public void bubbleSort(boolean flag){
    int temp = 0;
    if( flag == true) {
        for (int i = 0; i < size - 1; i++) {
            for (int j = 0; j < size - 1 - i; j++) {
                if (nums[j] > nums[j + 1]) {
                    temp = nums[j];
                    nums[j] = nums[j + 1];
                    nums[j + 1] = temp;
                }
            }
        }
    }

}


public static void main(String[] args) {
    InitSupperArray initSupperArray = new InitSupperArray();
    initSupperArray.addToRear(1);
    initSupperArray.addToRear(2);
    initSupperArray.addToRear(3);
    initSupperArray.addToIndex(1,4);
    initSupperArray.bubbleSort(true);
    for (int i = 0; i < initSupperArray.capacity; i++) {
        initSupperArray.find(i);
    }
}

}

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务