需求:
/*
现在要求定义一个数组(Array),里面定义了一个整型数组,但是此整型数组属于动态分配大小,
即:所以大小由程序指定,并在此基础上实现以下的两个子类。
*反转类:可以将数组的内容反转排列
*排序类:可以对数组进行排序的操作
*/
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class MyDynamicArray {
public static void main(String []args){
ReverseArray al = new ReverseArray();
SortArray sa = new SortArray();
al.add(1);
al.add(15);
al.add(7);
al.add(19);
al.add(5);
al.add(29);
al.add(9);
/*
al.add(7);
al.add(19);
al.add(5);
al.add(29);
al.add(9);
sa.add(7);
sa.add(19);
sa.add(5);
sa.add(29);
sa.add(9); */
sa.add(1);
sa.add(15);
sa.add(7);
sa.add(19);
sa.add(5);
sa.add(29);
sa.add(9);
System.out.println(al.toString());
//System.out.println(al);
al.reverse();
System.out.println(al.toString());
System.out.println(sa.toString());
sa.sort();
System.out.println(sa.toString());
}
}
class Array {
private int [] array = new int[10];
private int size =0;
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public int get(int index){
return array[index];
}
public int set(int index, int element){
array[index] = element;
return get(index);
}
public boolean add(int i){
size++;
System.out.println(size);
if(size>10)
array = copyArray(array);
array[size-1] = i;
return true;
}
private int[] copyArray(int[] array){
int []array1 = new int[array.length+1];
for(int i = 0; i<array.length;i++){
array1[i] = array[i];
}
return array1;
}
public boolean remove(int index){
if(index>=size)
return false;
else{
int[] array1 = new int[size - 1];
for(int i = 0, count = 0; i<size;i++){
if(i == index)
continue;
array1[count++] = array[i];
}
array = array1;
size--;
return true;
}
}
@Override
public String toString() {
// TODO Auto-generated method stub
Integer [] intList = new Integer[size];
for(int i = 0;i<size;i++){//注意角标越界。
intList[i] = get(i);
}
List list = Arrays.asList(intList);
return list.toString();
}
}
class ReverseArray extends Array{
public void reverse(){
int size = getSize();
int half = size>>1;
for(int i =0,x=0; i< half;i++){
x = get(i);
set(i, get(size-1-i));
set(size-1-i,x);
}
}
public void sort(){
int size = getSize();
for(int z=0,x=0;z<size-1;z++){
for(int y=z+1; y<size;y++){//y=z+1; 而不是1;
if(get(z)>get(y)){
x = get(z);
set(z, get(y));
set(y,x);
}
}
}
}
}
class SortArray extends Array{
public void sort(){
int size = getSize();
for(int z=0,x=0;z<size-1;z++){
for(int y=z+1; y<size;y++){
if(get(z)>get(y)){
x = get(z);
set(z, get(y));
set(y,x);
}
}
}
}
}