春風(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)

          隨筆分類(224)

          隨筆檔案(126)

          個(gè)人軟件下載

          我的其它博客

          我的鄰居們

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

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

          代碼:
          package com.sitinspring;

          import java.util.Arrays;

          /**
           * 泛型動(dòng)態(tài)數(shù)組類,以數(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)  編輯  收藏 所屬分類: Java基礎(chǔ)算法數(shù)據(jù)結(jié)構(gòu)

          sitinspring(http://www.aygfsteel.com)原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處.
          主站蜘蛛池模板: 仲巴县| 小金县| 南宫市| 长顺县| 永平县| 昌邑市| 滦平县| 蓝山县| 东乡族自治县| 彰武县| 定边县| 海城市| 广元市| 隆德县| 大宁县| 万全县| 通州市| 太原市| 来安县| 肇源县| 望城县| 钟祥市| 西乡县| 专栏| 肃南| 遵义县| 沅陵县| 武强县| 福清市| 天气| 肇庆市| 莲花县| 易门县| 葫芦岛市| 虎林市| 十堰市| 礼泉县| 沽源县| 浠水县| 白朗县| 霍城县|