春風(fēng)博客

          春天里,百花香...

          導(dǎo)航

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

          統(tǒng)計(jì)

          公告

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

          Locations of visitors to this page

          常用鏈接

          留言簿(11)

          隨筆分類(lèi)(224)

          隨筆檔案(126)

          個(gè)人軟件下載

          我的其它博客

          我的鄰居們

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          泛型動(dòng)態(tài)數(shù)組類(lèi)

          代碼:
          package com.sitinspring;

          import java.util.Arrays;

          /**
           * 泛型動(dòng)態(tài)數(shù)組類(lèi),以數(shù)組為數(shù)據(jù)容器實(shí)現(xiàn)動(dòng)態(tài)數(shù)組的功能
           * 
          @author: sitinspring(junglesong@gmail.com)
           * @date: 2008-6-23-下午10:08:09
           
          */

          public class DynamicArray<extends Object> {
              
          /** *//**
               * 用于存儲(chǔ)數(shù)據(jù)的數(shù)組
               
          */

              
          private T[] arr;

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

              
          private static final int initSize = 10;

              
          /** *//**
               * 當(dāng)前元素個(gè)數(shù)
               
          */

              
          private int currItemsCount = 0;

              
          /** *//**
               * 構(gòu)造函數(shù)一,固定大小
               
          */

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

              
              
          /** *//**
               * 構(gòu)造函數(shù)二,指定大小
               
          */

              @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+"超過(guò)了數(shù)組界限");
              }


              
          /** *//**
               * 取得數(shù)組中已有元素的個(gè)數(shù)
               * 
          @return
               
          */

              
          public int size() {
                  
          return currItemsCount;
              }


              
          /** *//**
               * 添加一個(gè)元素到數(shù)組
               * 
          @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;
                      }

                  }

              }


              
          /** *//**
               * 取得添值部分的數(shù)組
               * 
          @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;
              }

              
              
          /** *//**
               * 取得已排序的數(shù)組
               * 
          @return
               
          */

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



              
          /** *//**
               * 顯示添值部分的數(shù)組
               *
               
          */

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

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


              
          /** *//**
               * 顯示數(shù)組的所有子元素,包括添值和未添值部分
               *
               
          */

              
          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(
          "已排序整數(shù)數(shù)組元素為:");
                  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(
          "已排序字符串?dāng)?shù)組元素為:");
                  Object[] arr2 
          = strArray.getSortedArr();
                  
          for (int i = 0; i < arr2.length; i++{
                      System.out.print(arr2[i] 
          + ",");
                  }

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

          }

          輸出:
          現(xiàn)有元素有:1,2,3,4,5,
          所有元素有:
          1,2,3,4,5,null,null,null,null,null,null,null,
          現(xiàn)有元素有:
          1,2,3,4,5,6,7,8,9,10,
          所有元素有:
          1,2,3,4,5,6,7,8,9,10,null,null,
          現(xiàn)有元素有:
          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,
          現(xiàn)有元素有:
          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,
          現(xiàn)有元素有:
          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,
          現(xiàn)有元素有:
          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,
          現(xiàn)有元素有:
          2,3,5,6,7,8,9,10,11,12,14,15,2,3,4,3,4,
          已排序整數(shù)數(shù)組元素為:
          2,2,3,3,3,4,4,5,6,7,8,9,10,11,12,14,15,
          現(xiàn)有元素有:sitinspring,dalian,niaoling,china,asia,
          所有元素有:sitinspring,dalian,niaoling,china,asia,
          null,null,null,null,null,
          現(xiàn)有元素有:sitinspring,dalian,niaoling,china,asia,world,
          所有元素有:sitinspring,dalian,niaoling,china,asia,world,
          null,null,null,null,
          現(xiàn)有元素有:sitinspring,niaoling,china,asia,world,
          所有元素有:sitinspring,niaoling,china,asia,world,
          null,null,null,null,
          已排序字符串?dāng)?shù)組元素為:asia,china,niaoling,sitinspring,world,

          posted on 2008-06-25 17:08 sitinspring 閱讀(1332) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Java基礎(chǔ)算法數(shù)據(jù)結(jié)構(gòu)

          sitinspring(http://www.aygfsteel.com)原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處.
          主站蜘蛛池模板: 襄垣县| 永仁县| 图木舒克市| 双流县| 博爱县| 嵊泗县| 湄潭县| 梁山县| 双城市| 永和县| 长汀县| 深圳市| 龙州县| 始兴县| 清镇市| 咸阳市| 易门县| 丘北县| 高平市| 昭苏县| 贞丰县| 临邑县| 汕头市| 灯塔市| 白银市| 梧州市| 池州市| 通辽市| 普兰县| 随州市| 房山区| 岳阳县| 福州市| 长宁县| 富裕县| 锦屏县| 固始县| 永新县| 谷城县| 广元市| 保靖县|