您的位置:首页 > 理论基础 > 数据结构算法

关于动态数组的泛型实现

2017-06-21 12:35 232 查看
package data;

public class DynamicArray<T extends Comparable<T>> {
short index;
Object[] datas;

public DynamicArray(){
index=0;
datas  = new Object[2];
}
void addData(T a){
System.out.println("当前数组大小:"+datas.length);
if(index>=datas.length-1){
Object[] tempData = new Object[datas.length*2];
System.arraycopy(datas, 0, tempData, 0, datas.length);
datas = tempData;
}

datas[index]=a;

System.out.println("curIndex:"+index);
index++;
}
void addSort(T a){
System.out.println("当前数组大小:"+datas.length);
if(index>=datas.length-1){
Object[] tempData = new Object[datas.length*2];
System.arraycopy(datas, 0, tempData, 0, datas.length);
datas = tempData;
}
short tempIndex = 0;
while(tempIndex<=index&& datas[tempIndex]!=null&&a.compareTo((T) datas[tempIndex])>0){
tempIndex++;
}

for(short temp=index;tempIndex<=temp;temp--){
datas[temp+1] = datas[temp];
}
datas[tempIndex] = a;
index++;
}
void display(){
System.out.println("current Data:");
for(short a=0;a<index;a++){
System.out.println(datas[a]);
}
}

}
其中的疑惑是该数组不能用T来初始化大小,然后只能用Object来代替所有数据类型作为一个通用的操作类,想实现有序数组就查看了T继承自comparable接口,还有动态数组实现使用系统提供的数组复制方法,不知道这样实现好不好,提下意见
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息