春風博客

          春天里,百花香...

          導航

          <2008年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          統計

          公告

          MAIL: junglesong@gmail.com
          MSN: junglesong_5@hotmail.com

          Locations of visitors to this page

          常用鏈接

          留言簿(11)

          隨筆分類(224)

          隨筆檔案(126)

          個人軟件下載

          我的其它博客

          我的鄰居們

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          泛型動態數組類

          代碼:
          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,

          posted on 2008-06-25 17:08 sitinspring 閱讀(1335) 評論(0)  編輯  收藏 所屬分類: Java基礎算法數據結構

          sitinspring(http://www.aygfsteel.com)原創,轉載請注明出處.
          主站蜘蛛池模板: 大田县| 当涂县| 申扎县| 锡林郭勒盟| 长泰县| 洪雅县| 石嘴山市| 黔西县| 天门市| 通渭县| 哈巴河县| 永兴县| 许昌市| 新化县| 灌阳县| 金乡县| 宁陵县| 桐庐县| 潜山县| 策勒县| 巴南区| 万安县| 高清| 色达县| 霍州市| 镇宁| 淄博市| 广西| 吉水县| 宁武县| 钟祥市| 闸北区| 衡南县| 阿克苏市| 民权县| 北海市| 瑞丽市| 民勤县| 平安县| 泰宁县| 罗源县|