風雨無阻

          Hashtable真的能存儲對象嗎?

           

          看一看下面的很簡單的代碼,先是聲明了一個HashtableStringBuffer對象,然后分四次把StriingBuffer對象放入到Hashtable表中,在每次放入之前都對這個StringBuffer對象append()了一些新的字符串:

          package reference;

          import java.util.*;

          public class HashtableAdd{

              public static void main(String[] args){

                  Hashtable ht = new Hashtable();

                  StringBuffer sb = new StringBuffer();

                  sb.append("abc,");

                  ht.put("1",sb);    

                  sb.append("def,");

                  ht.put("2",sb);

                  sb.append("mno,");

                  ht.put("3",sb);

                  sb.append("xyz.");

                  ht.put("4",sb);

                 

                  int numObj=0;

                  Enumeration it = ht.elements();

                  while(it.hasMoreElements()){

                      System.out.print("get StringBufffer "+(++numObj)+" from Hashtable: ");

                      System.out.println(it.nextElement());

                  }

              }

          }

          如果你認為輸出的結果是:
          get StringBufffer 1 from Hashtable: abc,
          get StringBufffer 2 from Hashtable: abc,def
          ,
          get StringBufffer 3 from Hashtable: abc,def,mno,
          get StringBufffer 4 from Hashtable: abc,def,mno,xyz.

          那么你就要回過頭再仔細看一看上一個問題了,把對象時作為入口參數傳給函數,實質上是傳遞了對象的引用,向Hashtable傳遞StringBuffer對象也是只傳遞了這個StringBuffer對象的引用!每一次向Hashtable表中put一次StringBuffer,并沒有生成新的StringBuffer對象,只是在Hashtable表中又放入了一個指向同一StringBuffer對象的引用而已。

          Hashtable表存儲的任何一個StringBuffer對象(更確切的說應該是對象的引用)的改動,實際上都是對同一個"StringBuffer"的改動。所以Hashtable并不能真正存儲能對象,而只能存儲對象的引用。也應該知道這條原則對與Hashtable相似的Vector, List, Map, Set等都是一樣的。

          上面的例程的實際輸出的結果是:

          /* RUN RESULT

          get StringBufffer 1 from Hashtable: abc,def,mno,xyz.

          get StringBufffer 2 from Hashtable: abc,def,mno,xyz.

          get StringBufffer 3 from Hashtable: abc,def,mno,xyz.

          get StringBufffer 4 from Hashtable: abc,def,mno,xyz.

          */

          posted on 2008-03-14 10:45 秋楓故事 閱讀(577) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2008年3月>
          2425262728291
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          新聞檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 孟州市| 仪陇县| 舒城县| 宽甸| 潢川县| 滦平县| 通渭县| 延安市| 华安县| 彭水| 汝南县| 饶阳县| 临江市| 林甸县| 田林县| 湘潭市| 兴海县| 文登市| 宜兴市| 公主岭市| 石林| 上犹县| 含山县| 保定市| 天水市| 河东区| 通化县| 始兴县| 营口市| 贵德县| 兴和县| 静乐县| 凤翔县| 临朐县| 策勒县| 鞍山市| 卓资县| 高碑店市| 岱山县| 大足县| 治县。|