继往开来 吐故纳新
日历
网志分类
· 所有网志 (1024)
· 个人作品 (64)
· 软件设计 (33)
· 面向对象编程 (22)
· JavaAPI (44)
· Java开源工具 (36)
· Swing (34)
· Java语法细节 (39)
· 样式表CSS (12)
· XML (9)
· J2EE(JavaEE) (23)
· 算法数据结构 (64)
· 正则表达式 (4)
· 软件知识 (6)
· Java线程 (9)
· Web开发.Jsp/Servlet/Struts (20)
· 程序随想录 (7)
· Hibernate (7)
· Spring (5)
· J2SE 高级 (2)
· J2SE 高级 (0)
· Web开发.Ajax (16)
· Web开发.JavaScript (48)
· DB4O (2)
· Web开发.CSS/Html (22)
· C# (20)
· ERP (4)
· JDBC (1)
· 编程资源 (16)
· 编程感悟 (29)
· DB/Sql (13)
· VB (29)
· VC (2)
· 桌面脚本 (3)
· 新兴软件 (3)
· 英语学习 (21)
· 网文转载 (163)
· 职场风云 (40)
· 诗词歌赋 (32)
· 生活感言 (79)
· 生活常识 (0)
· 奇文共赏 (15)
· 财经纵横 (9)
· 未分类 (17)
站内搜索
友情链接
· 歪酷博客
· 我的歪酷 非非共享界
· 偶要雷锋
· 豆瓣
· nczonline
· 当当网
· easyjf中文站
· Donews
· 天极Java文章列表
· W3CSchool
· taiten的BLOG
· Dojo中国
· Dojo
· Extjs.com
· Lifehack中文网志
· JaveEye的一个AS专题
· Banq's JDon
· Java 中文网址大全
· 梦想Java
· 360Doc个人图书馆
· java开源大全
· 我在硅谷动力的软件下载站
· 站长中国
· 随意贴
· CSS教学素材站
· java 参考中文站
· 面向构件与SOA社区
· 彩字生成
· 派派小说论坛
· 如坐春风
· 英语学习网
· BBC CHina
· www.dlbang.com
· 古文竖排格式在线转化工具
· 免费家谱
· 图片上传基地
· 风景壁纸
· 和风细雨
· MyC#BlogInCsdn

订阅 RSS

0251431

歪酷博客

开此博一为经验积累,二为资料收集,三为同道交流,四为资源共享.
« 上一篇: 【原创】整形数组实用类,用于求两数组的并交差集 下一篇: 【原创】数目字计数器,可多次添加整形数,累计0-9各个数字出现了多少次 »
Junglesong @ 2008-06-28 16:49

代码:
package com.sitinspring;

import java.util.Arrays;

/**
 * 泛型动态数组类,以数组为数据容器实现动态数组的功能
 * 
@author: sitinspring(junglesong@gmail.com)
 * @date: 2008-6-23-下午10:08:09
 
*/

public class DynamicArray<extends Object> {
    
/** *//**
     * 用于存储数据的数组
     
*/

    
private T[] arr;

    
/** *//**
     * 初始化大小
     
*/

    
private static final int initSize = 10;

    
/** *//**
     * 当前元素个数
     
*/

    
private int currItemsCount = 0;

    
/** *//**
     * 构造函数一,固定大小
     
*/

    @SuppressWarnings(
"unchecked")
    
public DynamicArray() {
        arr 
= (T[])new Object[initSize]; 
    }

    
    
/** *//**
     * 构造函数二,指定大小
     
*/

    @SuppressWarnings(
"unchecked")
    
public DynamicArray(int len) {
        arr 
= (T[])new Object[len]; 
    }


    
/** *//**
     * 取得位置在i的元素
     
*/

    
public T get(int i) {
        
if (i < currItemsCount) {
            
return arr[i];
        }


        
throw new ArrayIndexOutOfBoundsException(i+"超过了数组界限");
    }


    
/** *//**
     * 取得数组中已有元素的个数
     * 
@return
     
*/

    
public int size() {
        
return currItemsCount;
    }


    
/** *//**
     * 添加一个元素到数组
     * 
@param number
     
*/

    @SuppressWarnings(
"unchecked")
    
public void add(T number) {
        
if (currItemsCount >= arr.length) {
            T[] arrNew 
=(T[]) new Object[arr.length * 2];
            
for (int i = 0; i < arr.length; i++{
                arrNew[i] 
= arr[i];
            }


            arr 
= arrNew;
        }


        arr[currItemsCount] 
= number;
        currItemsCount
++;
    }


    
/** *//**
     * 删除位置在i的元素
     * 
@param removeIndex
     
*/

    @SuppressWarnings(
"unchecked")
    
public void remove(int removeIndex) {
        
if (removeIndex < arr.length) {
            
if (removeIndex > currItemsCount) {
                T[] arrNew 
= (T[]) new Object[arr.length - 1];
                
for (int j = 0; j < arrNew.length; j++{
                    arrNew[j] 
= arr[j];
                }


                arr 
= arrNew;
            }
 else {
                T[] arrNew 
= (T[]) new Object[arr.length - 1];
                
for (int j = 0; j < removeIndex; j++{
                    arrNew[j] 
= arr[j];
                }


                
for (int j = removeIndex + 1; j < arr.length; j++{
                    arrNew[j 
- 1= arr[j];
                }

                currItemsCount
--;
                arr 
= arrNew;
            }

        }

    }


    
/** *//**
     * 取得添值部分的数组
     * 
@return
     
*/

    @SuppressWarnings(
"unchecked")
    
public T[] getArr() {
        T[] arrNew 
= (T[])new Object[currItemsCount];

        
for (int i = 0; i < arrNew.length; i++{
            arrNew[i] 
= arr[i];
        }


        
return arrNew;
    }

    
    
/** *//**
     * 取得已排序的数组
     * 
@return
     
*/

    
public T[] getSortedArr(){
        T[] arrSorted 
= getArr();
        Arrays.sort(arrSorted);
        
return arrSorted;
    }



    
/** *//**
     * 显示添值部分的数组
     *
     
*/

    
public void display() {
        System.out.print(
"现有元素有:");
        
for (int i = 0; i < currItemsCount; i++{
            System.out.print(arr[i] 
+ ",");
        }

        System.out.print(
"\n");
    }


    
/** *//**
     * 显示数组的所有子元素,包括添值和未添值部分
     *
     
*/

    
public void displayAll() {
        System.out.print(
"所有元素有:");
        
for (int i = 0; i < arr.length; i++{
            System.out.print(arr[i] 
+ ",");
        }

        System.out.print(
"\n");
    }


    
/** *//**
     * 程序入口
     * 
@param args
     
*/

    
public static void main(String[] args) {
        DynamicArray
<Integer> dArray = new DynamicArray<Integer>(12);

        dArray.add(
1);
        dArray.add(
2);
        dArray.add(
3);
        dArray.add(
4);
        dArray.add(
5);
        dArray.display();
        dArray.displayAll();

        dArray.add(
6);
        dArray.add(
7);
        dArray.add(
8);
        dArray.add(
9);
        dArray.add(
10);
        dArray.display();
        dArray.displayAll();

        dArray.add(
11);
        dArray.add(
12);
        dArray.add(
13);
        dArray.add(
14);
        dArray.add(
15);
        dArray.display();
        dArray.displayAll();

        dArray.remove(
3);
        dArray.display();
        dArray.displayAll();

        dArray.remove(
0);
        dArray.display();
        dArray.displayAll();

        dArray.remove(
10);
        dArray.display();
        dArray.displayAll();

        dArray.add(
2);        
        dArray.add(
3);
        dArray.add(
4);
        dArray.add(
3);
        dArray.add(
4);
        
        dArray.display();
        System.out.print(
"已排序整数数组元素為:");
        Object[] arr 
= dArray.getSortedArr();
        
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();
        
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,


评论 / 个人网页 / 扔小纸条
* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 


 

分类小组论坛
杂谈 , 娱乐、八卦 , 文学、艺术 , 体育 , 旅游、同城 , 象牙塔 , 情感 , 时尚、生活 , 星座 , 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定