代码:
package com.sitinspring;
![](http://image109.360doc.com/DownloadImg/2008/09/2810/772007_9_20230602033413679.gif)
import java.util.Arrays;
![](http://image109.360doc.com/DownloadImg/2008/09/2810/772007_9_20230602033413679.gif)
![](http://image109.360doc.com/DownloadImg/2008/09/2810/772007_10_20230602033413725.gif) /** *//**
* 泛型动态数组类,以数组为数据容器实现动态数组的功能
* @author: sitinspring(junglesong@gmail.com)
* @date: 2008-6-23-下午10:08:09
*/
![](http://pubimage.360doc.com/wz/default.gif) public class DynamicArray<T extends Object> {
![](http://pubimage.360doc.com/wz/default.gif) /** *//** *//** *//**
* 用于存储数据的数组
*/
private T[] arr;
![](http://pubimage.360doc.com/wz/default.gif)
![](http://pubimage.360doc.com/wz/default.gif) /** *//** *//** *//**
* 初始化大小
*/
private static final int initSize = 10;
![](http://pubimage.360doc.com/wz/default.gif)
![](http://pubimage.360doc.com/wz/default.gif) /** *//** *//** *//**
* 当前元素个数
*/
private int currItemsCount = 0;
![](http://pubimage.360doc.com/wz/default.gif)
![](http://pubimage.360doc.com/wz/default.gif) /** *//** *//** *//**
* 构造函数一,固定大小
*/
@SuppressWarnings("unchecked")
![](http://pubimage.360doc.com/wz/default.gif) public DynamicArray() {
arr = (T[])new Object[initSize];
}
![](http://pubimage.360doc.com/wz/default.gif) /** *//** *//** *//**
* 构造函数二,指定大小
*/
@SuppressWarnings("unchecked")
![](http://pubimage.360doc.com/wz/default.gif) public DynamicArray(int len) {
arr = (T[])new Object[len];
}
![](http://pubimage.360doc.com/wz/default.gif)
![](http://pubimage.360doc.com/wz/default.gif) /** *//** *//** *//**
* 取得位置在i的元素
*/
![](http://pubimage.360doc.com/wz/default.gif) public T get(int i) {
![](http://pubimage.360doc.com/wz/default.gif) if (i < currItemsCount) {
return arr[i];
}
![](http://pubimage.360doc.com/wz/default.gif)
throw new ArrayIndexOutOfBoundsException(i+"超过了数组界限");
}
![](http://pubimage.360doc.com/wz/default.gif)
![](http://pubimage.360doc.com/wz/default.gif) /** *//** *//** *//**
* 取得数组中已有元素的个数
* @return
*/
![](http://pubimage.360doc.com/wz/default.gif) public int size() {
return currItemsCount;
}
![](http://pubimage.360doc.com/wz/default.gif)
![](http://pubimage.360doc.com/wz/default.gif) /** *//** *//** *//**
* 添加一个元素到数组
* @param number
*/
@SuppressWarnings("unchecked")
![](http://pubimage.360doc.com/wz/default.gif) public void add(T number) {
![](http://pubimage.360doc.com/wz/default.gif) if (currItemsCount >= arr.length) {
T[] arrNew =(T[]) new Object[arr.length * 2];
![](http://pubimage.360doc.com/wz/default.gif) for (int i = 0; i < arr.length; i++) {
arrNew[i] = arr[i];
}
![](http://pubimage.360doc.com/wz/default.gif)
arr = arrNew;
}
![](http://pubimage.360doc.com/wz/default.gif)
arr[currItemsCount] = number;
currItemsCount++;
}
![](http://pubimage.360doc.com/wz/default.gif)
![](http://pubimage.360doc.com/wz/default.gif) /** *//** *//** *//**
* 删除位置在i的元素
* @param removeIndex
*/
@SuppressWarnings("unchecked")
![](http://pubimage.360doc.com/wz/default.gif) public void remove(int removeIndex) {
![](http://pubimage.360doc.com/wz/default.gif) if (removeIndex < arr.length) {
![](http://pubimage.360doc.com/wz/default.gif) if (removeIndex > currItemsCount) {
T[] arrNew = (T[]) new Object[arr.length - 1];
![](http://pubimage.360doc.com/wz/default.gif) for (int j = 0; j < arrNew.length; j++) {
arrNew[j] = arr[j];
}
![](http://pubimage.360doc.com/wz/default.gif)
arr = arrNew;
![](http://pubimage.360doc.com/wz/default.gif) } else {
T[] arrNew = (T[]) new Object[arr.length - 1];
![](http://pubimage.360doc.com/wz/default.gif) for (int j = 0; j < removeIndex; j++) {
arrNew[j] = arr[j];
}
![](http://pubimage.360doc.com/wz/default.gif)
![](http://pubimage.360doc.com/wz/default.gif) for (int j = removeIndex + 1; j < arr.length; j++) {
arrNew[j - 1] = arr[j];
}
currItemsCount--;
arr = arrNew;
}
}
}
![](http://pubimage.360doc.com/wz/default.gif)
![](http://pubimage.360doc.com/wz/default.gif) /** *//** *//** *//**
* 取得添值部分的数组
* @return
*/
@SuppressWarnings("unchecked")
![](http://pubimage.360doc.com/wz/default.gif) public T[] getArr() {
T[] arrNew = (T[])new Object[currItemsCount];
![](http://pubimage.360doc.com/wz/default.gif)
![](http://pubimage.360doc.com/wz/default.gif) for (int i = 0; i < arrNew.length; i++) {
arrNew[i] = arr[i];
}
![](http://pubimage.360doc.com/wz/default.gif)
return arrNew;
}
![](http://pubimage.360doc.com/wz/default.gif) /** *//** *//** *//**
* 取得已排序的数组
* @return
*/
![](http://pubimage.360doc.com/wz/default.gif) public T[] getSortedArr() {
T[] arrSorted = getArr();
Arrays.sort(arrSorted);
return arrSorted;
}
![](http://pubimage.360doc.com/wz/default.gif)
![](http://pubimage.360doc.com/wz/default.gif)
![](http://pubimage.360doc.com/wz/default.gif) /** *//** *//** *//**
* 显示添值部分的数组
*
*/
![](http://pubimage.360doc.com/wz/default.gif) public void display() {
System.out.print("现有元素有:");
![](http://pubimage.360doc.com/wz/default.gif) for (int i = 0; i < currItemsCount; i++) {
System.out.print(arr[i] + ",");
}
System.out.print("\n");
}
![](http://image109.360doc.com/DownloadImg/2008/09/2810/772007_12_20230602033413819.gif)
![](http://image109.360doc.com/DownloadImg/2008/09/2810/772007_15_202306020334147.gif) /** *//** *//** *//**
* 显示数组的所有子元素,包括添值和未添值部分
*
*/
![](http://image109.360doc.com/DownloadImg/2008/09/2810/772007_15_202306020334147.gif) public void displayAll() {
System.out.print("所有元素有:");
![](http://image109.360doc.com/DownloadImg/2008/09/2810/772007_15_202306020334147.gif) for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + ",");
}
System.out.print("\n");
}
![](http://image109.360doc.com/DownloadImg/2008/09/2810/772007_12_20230602033413819.gif)
![](http://image109.360doc.com/DownloadImg/2008/09/2810/772007_15_202306020334147.gif) /** *//** *//** *//**
* 程序入口
* @param args
*/
![](http://image109.360doc.com/DownloadImg/2008/09/2810/772007_15_202306020334147.gif) public static void main(String[] args) {
DynamicArray<Integer> dArray = new DynamicArray<Integer>(12);
![](http://image109.360doc.com/DownloadImg/2008/09/2810/772007_12_20230602033413819.gif)
dArray.add(1);
dArray.add(2);
dArray.add(3);
dArray.add(4);
dArray.add(5);
dArray.display();
dArray.displayAll();
![](http://image109.360doc.com/DownloadImg/2008/09/2810/772007_12_20230602033413819.gif)
dArray.add(6);
dArray.add(7);
dArray.add(8);
dArray.add(9);
dArray.add(10);
dArray.display();
dArray.displayAll();
![](http://image109.360doc.com/DownloadImg/2008/09/2810/772007_12_20230602033413819.gif)
dArray.add(11);
dArray.add(12);
dArray.add(13);
dArray.add(14);
dArray.add(15);
dArray.display();
dArray.displayAll();
![](http://image109.360doc.com/DownloadImg/2008/09/2810/772007_12_20230602033413819.gif)
dArray.remove(3);
dArray.display();
dArray.displayAll();
![](http://image109.360doc.com/DownloadImg/2008/09/2810/772007_12_20230602033413819.gif)
dArray.remove(0);
dArray.display();
dArray.displayAll();
![](http://image109.360doc.com/DownloadImg/2008/09/2810/772007_12_20230602033413819.gif)
dArray.remove(10);
dArray.display();
dArray.displayAll();
![](http://image109.360doc.com/DownloadImg/2008/09/2810/772007_12_20230602033413819.gif)
dArray.add(2);
dArray.add(3);
dArray.add(4);
dArray.add(3);
dArray.add(4);
dArray.display();
System.out.print("已排序整数数组元素為:");
Object[] arr = dArray.getSortedArr();
![](http://image109.360doc.com/DownloadImg/2008/09/2810/772007_15_202306020334147.gif) for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + ",");
}
System.out.print("\n");
DynamicArray<String> strArray = new DynamicArray<String>(10);
strArray.add("sitinspring");
strArray.add("dalian");
strArray.add("niaoling");
strArray.add("china");
strArray.add("asia");
strArray.display();
strArray.displayAll();
strArray.add("world");
strArray.display();
strArray.displayAll();
strArray.remove(1);
strArray.display();
strArray.displayAll();
System.out.print("已排序字符串数组元素為:");
Object[] arr2 = strArray.getSortedArr();
![](http://image109.360doc.com/DownloadImg/2008/09/2810/772007_15_202306020334147.gif) for (int i = 0; i < arr2.length; i++) {
System.out.print(arr2[i] + ",");
}
System.out.print("\n");
}
}
输出:
现有元素有:1,2,3,4,5,
所有元素有:1,2,3,4,5,null,null,null,null,null,null,null,
现有元素有:1,2,3,4,5,6,7,8,9,10,
所有元素有:1,2,3,4,5,6,7,8,9,10,null,null,
现有元素有:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
所有元素有:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,null,null,null,null,null,null,null,null,null,
现有元素有:1,2,3,5,6,7,8,9,10,11,12,13,14,15,
所有元素有:1,2,3,5,6,7,8,9,10,11,12,13,14,15,null,null,null,null,null,null,null,null,null,
现有元素有:2,3,5,6,7,8,9,10,11,12,13,14,15,
所有元素有:2,3,5,6,7,8,9,10,11,12,13,14,15,null,null,null,null,null,null,null,null,null,
现有元素有:2,3,5,6,7,8,9,10,11,12,14,15,
所有元素有:2,3,5,6,7,8,9,10,11,12,14,15,null,null,null,null,null,null,null,null,null,
现有元素有:2,3,5,6,7,8,9,10,11,12,14,15,2,3,4,3,4,
已排序整数数组元素為:2,2,3,3,3,4,4,5,6,7,8,9,10,11,12,14,15,
现有元素有:sitinspring,dalian,niaoling,china,asia,
所有元素有:sitinspring,dalian,niaoling,china,asia,null,null,null,null,null,
现有元素有:sitinspring,dalian,niaoling,china,asia,world,
所有元素有:sitinspring,dalian,niaoling,china,asia,world,null,null,null,null,
现有元素有:sitinspring,niaoling,china,asia,world,
所有元素有:sitinspring,niaoling,china,asia,world,null,null,null,null,
已排序字符串数组元素為:asia,china,niaoling,sitinspring,world,
|