<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    離弦之Ray

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      55 Posts :: 0 Stories :: 33 Comments :: 0 Trackbacks
    Interfaces

    有兩種主要的Collection Types
    java.util.Map
    java.util.SortedMap
    java.util.Collection
    java.util.Set
    java.util.List
    java.util.SortedSet


    Implementations

    List的三種實現(xiàn)

    java.util.Vector
    java.util.ArrayList
    java.util.LinkedList

    三者的異同
    三者都是有序的,一般就是加入的次序。

            VectorArrayList內(nèi)部都是用數(shù)組實現(xiàn)的,可以把它們想象成為一個數(shù)組。當容量不夠的時候,就新建一個更大的數(shù)組,然后把現(xiàn)在這個數(shù)組中的所有元素都拷過去。可以想象這種實現(xiàn)可以很方便的直接取出你要的某個元素而不用遍歷。但是如果在中間刪除或者插入元素,效率就不高了。甚至每次擴容的時候,都是很影響效率的時候。

            VectorArrayList的區(qū)別就是Vector是線程安全的,但ArrayList不是。因為實現(xiàn)線程安全是有代價的,如果應(yīng)用中不需要線程安全,那么就用ArrayList,如果需要線程安全那就一定要用Vector

    至于java中的LinkedList,其實在數(shù)據(jù)結(jié)構(gòu)中就是雙向鏈表。插入和刪除元素都很快,但是要查找一個元素就慢了。有失必有得,如何選擇,就看應(yīng)用的情況了。


    MapSortedMap的幾種實現(xiàn)

    java.util.HashTable
    java.util.HashMap
    java.util.IdentityHashMap
    java.util.WeakHashMap

            以上四種都是無序的。HashTableHashMap的區(qū)別是HashTable是線程安全的而HashMap不是,這個關(guān)系有點像VectorArrayList

            IdentityHashMap首先它是一個HashMap,不同的是,它不是根據(jù)equal()函數(shù)來判斷是否重復(fù),只要不是同一個對象,哪怕這兩個對象的數(shù)據(jù)都是一樣的,那么就可以add進來。


    java.util.LinkedHashMap

    java.uil.TreeMap

            以上兩種是有序的Map,可以進行iterate,當然這是要付出效率代價的。兩者不同之處,由名字便可知道,LinkedHashMap用鏈表來維護這個次序,而TreeMap是用二叉樹來維護這個次序。

    SetsSortedSets的幾種實現(xiàn)

    java.util.HashSet
    java.util.LinkedSet
    java.util.TreeSet

    由名字就可知道什么意思了,不多說了

    Collection的選擇

            需要通過一個key找到一個元素嗎?
            Yes,那就用Map
            No,那就用Collection

           如果選擇了一個Collection,允許重復(fù)元素嗎?
           Yes,那就用List
           No,那就用Set

           然后就是決定要不要Sorted...這個就比較難決定了。
           如果常常要sort,那就直接選擇sorted的類型
           如果偶爾或者根本不需要sorted,那就選擇普通類型,需要sort的時候先拷到sorted的類型中sort一下。

    三種Iterators

    java.util.Enumeration

    這個基本被Iterator替代掉了,但在某些場合,比如J2ME中還可能用到。

    java.util.Iterator

    用的最廣泛

    java.util.ListIterator

    雙向的Iterator,必須用在實現(xiàn)ListCollection上面。


    PS很多Collection提供的是Fail-Fast Iterators,就是在iterater的時候,這個Collection是不能被更改的,否則就會報出ConcurrentModificationException在多線程環(huán)境下面尤其要注意。


    posted on 2007-10-26 21:14 離弦之ray的技術(shù)天空 閱讀(757) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 免费大学生国产在线观看p| 97人伦色伦成人免费视频 | 5g影院5g天天爽永久免费影院| 亚洲精品国产美女久久久| 中文字幕成人免费高清在线视频| 亚洲综合色区在线观看| av电影在线免费看| 久久久青草青青国产亚洲免观| 七次郎成人免费线路视频| 亚洲精品无码久久不卡| 美女网站在线观看视频免费的| 国产亚洲免费的视频看| 无码国产精品一区二区免费式芒果 | 久久精品国产亚洲AV麻豆王友容| 毛片a级毛片免费播放100| 成人免费乱码大片A毛片| 亚洲欧洲日韩国产一区二区三区| 亚洲片国产一区一级在线观看 | 亚洲国模精品一区| 一个人免费观看视频www| aaa毛片视频免费观看| 亚洲国产日韩a在线播放| 亚洲成a人片在线观看中文动漫| 日韩一级免费视频| 在线观看www日本免费网站| 成人免费观看男女羞羞视频| 亚洲午夜成激人情在线影院| 亚洲日本va在线视频观看| 国产精品高清全国免费观看| 在线看片v免费观看视频777| 97国免费在线视频| 免费福利资源站在线视频| 亚洲AV综合色区无码二区偷拍| 亚洲国产另类久久久精品小说| 日本特黄特色免费大片| 日韩免费一区二区三区在线| 2017亚洲男人天堂一| 国产午夜亚洲精品理论片不卡 | 免费亚洲视频在线观看| 婷婷久久久亚洲欧洲日产国码AV | 久久久久国色AV免费观看|