面向对象之封装——封装实现一个超级数组,将数组中常用的业务功能封装在超级数组类。
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);
}
}
}