/**
* 定义一个容器类:
* 集合的功能 :
* a.能存任意多的数据
* b.存入的顺序与取出的顺序一样
*/
import java.util.Arrays;
public class List {
//初始数组长度
private final int INIT_LENGTH = 10;
private int[] array = new int[INIT_LENGTH];
private int index = -1;
//清空
public void clear(){
array = new int[INIT_LENGTH];
index = -1;
System.gc();//垃圾回收
}
//求出容器的真实大小
public int size(){
return index+1;
}
//添加一个整数
public void add(int value){
//首先要判断 数组是否 已满
if(index>array.length){
expand(); //已满 就要扩展数组
}
index++;
array[index] = value;
}
//添加新数组
public int add(int[] newArray){
int temp = index;
if(newArray == null){
System.out.println("数组不能为空");
return -1;
}
if(index+1+newArray.length > array.length){
int newlength = (index+1+newArray.length) * 2;
expand(newlength);
}
System.arraycopy(newArray, 0, array, index+1, newArray.length);
index = index + newArray.length;
return temp+1; // 返回新数组开始插入的位置
}
//方法的重载 :根据新数组的长度来扩展数组
private void expand(int newlength){
int[] x = new int[newlength];
//复制 array 中数据到 x 中
System.arraycopy(array, 0, x, 0, array.length);
//将 x的引用赋值给 array
array = x;
}
//扩展一个数组,这个新数组的长度是 原数组的两倍大
private void expand(){
int[] x = new int[array.length*2];
//复制 array 中数据到 x 中
System.arraycopy(array, 0, x, 0, array.length);
//将 x的引用赋值给 array
array = x;
}
//删除指定位置的元素
// i 表示要删除的位置
// 返回 -1 表示失败
public int remove( int i ){
//判断 i 是否存在
if(i>=0 && i<=index){
//array数组移动位置
System.arraycopy(array, i+1, array, i, index-i);
//数组长度减1
index--;
}else{
System.out.println("集合中没有这个索引");
return -1;
}
return i;
}
//返回数组的内容
public int[] getArray(){
//新创建一个数组,这个数组的长度是 index+1 ,int[] x = new int[index+1];
int[] result = new int[size()]; //size()得到的结果也是 index+1
// 复制array中的数据到 x 中
System.arraycopy(array, 0, result, 0, size());
return result;
}
}
* 定义一个容器类:
* 集合的功能 :
* a.能存任意多的数据
* b.存入的顺序与取出的顺序一样
*/
import java.util.Arrays;
public class List {
//初始数组长度
private final int INIT_LENGTH = 10;
private int[] array = new int[INIT_LENGTH];
private int index = -1;
//清空
public void clear(){
array = new int[INIT_LENGTH];
index = -1;
System.gc();//垃圾回收
}
//求出容器的真实大小
public int size(){
return index+1;
}
//添加一个整数
public void add(int value){
//首先要判断 数组是否 已满
if(index>array.length){
expand(); //已满 就要扩展数组
}
index++;
array[index] = value;
}
//添加新数组
public int add(int[] newArray){
int temp = index;
if(newArray == null){
System.out.println("数组不能为空");
return -1;
}
if(index+1+newArray.length > array.length){
int newlength = (index+1+newArray.length) * 2;
expand(newlength);
}
System.arraycopy(newArray, 0, array, index+1, newArray.length);
index = index + newArray.length;
return temp+1; // 返回新数组开始插入的位置
}
//方法的重载 :根据新数组的长度来扩展数组
private void expand(int newlength){
int[] x = new int[newlength];
//复制 array 中数据到 x 中
System.arraycopy(array, 0, x, 0, array.length);
//将 x的引用赋值给 array
array = x;
}
//扩展一个数组,这个新数组的长度是 原数组的两倍大
private void expand(){
int[] x = new int[array.length*2];
//复制 array 中数据到 x 中
System.arraycopy(array, 0, x, 0, array.length);
//将 x的引用赋值给 array
array = x;
}
//删除指定位置的元素
// i 表示要删除的位置
// 返回 -1 表示失败
public int remove( int i ){
//判断 i 是否存在
if(i>=0 && i<=index){
//array数组移动位置
System.arraycopy(array, i+1, array, i, index-i);
//数组长度减1
index--;
}else{
System.out.println("集合中没有这个索引");
return -1;
}
return i;
}
//返回数组的内容
public int[] getArray(){
//新创建一个数组,这个数组的长度是 index+1 ,int[] x = new int[index+1];
int[] result = new int[size()]; //size()得到的结果也是 index+1
// 复制array中的数据到 x 中
System.arraycopy(array, 0, result, 0, size());
return result;
}
}