对java数组操作方法

来源:互联网 发布:百度us优化怎么做 编辑:程序博客网 时间:2024/06/07 06:11
/**
 * 建立一个可以实现整型数组的操作类(Array),而后 在里面可以操作的数组大小由外部来决定,
 * 而后在Array类里面需要提供有数组的如下处理:进行数组的增加(如果数据满了,则无法增加)、
 * 可以实现数组的容量扩充、取得数组的全部内容
 * 完成之后次基础上在派生出两个子类;
 * 1.数组排序类:返回的数据必须是排序后的结果
 * 2.数组反转类:可以实现内容的首尾交换
 */
package cn.ml.array;
import java.util.Arrays;
class Array{ //数组操作类
private int data[] ;//数组并不知道具体的长度
private int food ; //定义脚标处理
/**
* 实现有外部决定数组的大小
* @param len 数组的长度
*/
public Array(int len) {//设置一个初始化值
if(len<0) {
this.data = new int[0];
}else {
this.data = new int[1];
}
}
/**
* 改变原数组的大小
* @param inc
*/
public void increment(int inc) {
int[] temp = new int[this.data.length + inc];
System.arraycopy(this.data, 0, temp, 0, this.data.length);
this.data = temp;//改变应引用
}
/**
* 获取全部的数据
* @return 全部数据
*/
public int[] getData(){
return this.data;
}
/**
* 实现数据的添加
* @param num 添加的数据
* @return 添加结果
*/
public boolean add(int num) {
if(this.food<this.data.length) {
this.data[this.food++] =num;
return true;
}
return false;
}
}
public class BasicsArray {
public static void main(String[] args) {
Array arr = new Array(5);
System.out.print(arr.add(10)+"\t");
System.out.print(arr.add(15)+"\t");
System.out.print(arr.add(25)+"\t");
System.out.print(arr.add(52)+"\t");
System.out.print(arr.add(56)+"\t");
if(arr.add(99) == false) {
arr.increment(3);//扩充3个容量
System.out.print(arr.add(99)+"\t");
System.out.print(arr.add(85)+"\t");
System.out.print(arr.add(35)+"\t");
}
int temp[] = arr.getData();
for (int i = 0; i < temp.length; i++) {
System.out.println(temp[i]+ "\t");
}
}

}
/**
 * 数组排序子类
 * @author Administrator
 *
 */
class SortArray extends Array{
public SortArray(int len) {//设置长度
super(len);
}
/**
* 覆盖父类的输出方法,子类中进行排序后的输出
*/
public int[] getData() {
Arrays.sort(super.getData());
return super.getData();
}
}
/**
 * 数组反转的类
 * @author Administrator
 *
 */
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 i = 0; i < center; i++) {
int temp = super.getData()[head];
super.getData()[head++] = super.getData()[tail];
super.getData()[tail--] = temp;
}

return super.getData();

}
}