幻境
          We are extremely fortunate not to know precisely the kind of world we live in
          posts - 22,comments - 39,trackbacks - 0

          (原文發表于http://www.ondev.net/post/show/565,轉載請注明出處)

          關于Java Collection Framework,你可能已經知道如下一些事實

          1. Vector是線程安全的,ArrayList不是
          2. ArrayList的讀操作比LinkedList快,LinkedList的append操作比ArrayList快
          3. Set中不可能有兩個相等的元素,也就是說,如果e1和e2都在同一個Set中,那么不可能有e1.equals(e2)
          4. HashMap是線程不安全的,HashTable是線程安全的


          但是你可能還不知道或者不了解這些事情:

          1. LinkedList不是線程安全的
          2. 不管是在多線程還是單線程的環境下,ArrayList都要比Vector快很多倍
          3. Set中可以插入null,不過最多只會有一個
          4. HashMap中可以插入null,HashTable中不行
          5. TreeSet使用compareTo代替equals判斷是否兩個元素相等
          6. HashMap中的元素,無論是keySet還是valueSet,都不一定是按照插入時間先后排序的,HashSet也一樣
          7. 對于非線程安全的類,比如HashMap,ArrayList,TreeSet,可以使用Collections.synchronizedXXX方法(比如synchronizedSet,synchronizedList,synchronizedMap)
          8. 你可以使用Collections.unmodifiableList來構建出一個不能被修改的List
          9. 你可以使用Arrays.equals來判斷兩個數組是否相等
          10. WeakHashMap使用元素的引用而不是值作為key,也就是說必須在引用相同(a==b)的情況下才能找到相關的值
          11. 對于WeakHashMap,一旦引用失效,相應的值也就不存在了,比如下面一段代碼中:

          ?
          1. public ? class ?TestHashMap?{? ??
          2. ??
          3. ???? public ? static ?WeakHashMap?wHmp=? new ?WeakHashMap();? ??
          4. ???? ??
          5. ???? public ? static ? void ?main(String?args[]){? ??
          6. ???????String?s1?=? new ?String( "one" );? ??
          7. ???????wHmp.put(s1, new ?Integer( 1 ));? ??
          8. ???????addObject(wHmp);? ??
          9. ???????Set?setHmp=?wHmp.keySet();? ??
          10. ???????? ??
          11. ??????? for (Iterator?it=setHmp.iterator();it.hasNext();){? ??
          12. ??????????System.out.println(wHmp.get(it.next()));? ??
          13. ??????}? ??
          14. ???????? ??
          15. ???}? ??
          16. ???? ??
          17. ??? public ? static ? void ?addObject(WeakHashMap?wHmp){? ??
          18. ???????? ??
          19. ?????String?s2?=? new ?String( "two" );? ??
          20. ?????String?s3?=? new ?String( "three" );? ??
          21. ?????wHmp.put(s2, new ?Integer( 2 ));? ??
          22. ?????wHmp.put(s3, new ?Integer( 3 ));? ??
          23. ?????s2= null ;? ??
          24. ?????s3= null ;? ??
          25. ?????System.gc();? ??
          26. ???}? ??
          27. }???

          最后打印出來的結果只有"one”

          posted on 2009-04-08 10:28 閱讀(627) 評論(0)  編輯  收藏 所屬分類: 編程相關
          主站蜘蛛池模板: 咸丰县| 新营市| 松原市| 饶阳县| 和静县| 宁陵县| 新源县| 盖州市| 含山县| 深州市| 淅川县| 葫芦岛市| 南安市| 盖州市| 亚东县| 景德镇市| 邹平县| 北辰区| 墨脱县| 封丘县| 伊金霍洛旗| 安达市| 深水埗区| 肥城市| 工布江达县| 阳山县| 南涧| 长春市| 金寨县| 曲阜市| 芦山县| 大方县| 海伦市| 砀山县| 萝北县| 航空| 晋州市| 甘泉县| 宾阳县| 郑州市| 沙河市|