关于动态数组的泛型实现
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接口,还有动态数组实现使用系统提供的数组复制方法,不知道这样实现好不好,提下意见
相关文章推荐
- 用数组实现支持泛型的栈,支持动态扩容
- 关于用Delphi实现动态代理
- 关于两个用于创建和销毁二维动态数组的宏
- C简单实现动态2维数组
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 关于交叉报表的动态实现
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现,附代码)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 链表实现动态数组C源代码
- 纯c语言实现动态分配多维数组的方法
- 用C++二级指针实现像C#一样的动态交错数组
- 用模板实现动态数组
- 关于统计的一个sql问题,使用动态sql语句实现。
- VB.NET 实现动态数组
- 动态数组实现的堆栈
- 用静态数组实现一个泛型的堆栈,数组的长度当堆栈实例化时作为参数给出
- Python中数组 链表 元组 字典实现类Sql多字段排序和动态函数实现
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)