Vincent Jia 博客

          to be a better man, to be a bad man.

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            29 隨筆 :: 3 文章 :: 0 評論 :: 0 Trackbacks
          括號為是否線程安全
          list: LinkedList(no) ArrayList(no) Vector(yes) Stack(yes)
          map: HashMap(no) LinkedHashMap(no) HashTable(yes) WeakHashMap TreeMap
          set: HashSet(no) LinkedHashSet(no) SortedSet TreeSet
          最常用的好像為每行的前兩個
          特征:
          1. Linked開頭的適合快速插入,刪除元素, linked維護元素插入的次序
          2. Set 在 HashMap 的基礎上實現, 所以Set結尾的key是不會重復的
          3. Tree開頭的是每次改變發生排序的, 速度慢
          適用:
          1. 需要快速插入,刪除元素, 用 LinkedList; 需要快速隨機訪問元素,用 ArrayList
          2. Vector 類似 ArrayList, 但是是同步的
          3. Stack 繼承 Vector , 是后進先出的堆棧
          4. HashMap, put進去的對象位置會發生變化, LinkedHashMap 則不會
          5. HashSet 是專門為快速查詢而設計的, 插入會產生排序(LinkedHashSet 不會), 存入HashSet的對象必須定義hashCode方法
             我的補充:關于“存入HashSet的對象必須定義hashCode方法”,其實不是必須的,但是,當我們沒有重寫hashCode()時,則所有我們添加進Set的對象都不會有重復現象,我們可以添加多個具有相等值得對象,但是,這就與我們的初衷有了背離,Set本身用于存儲unique的對象,所以我們重寫hashCode()和equals(),符合我們的業務邏輯。
          6. SortedSet 是保持元素的有序順序的Set接口, 添加到 SortedSet 實現類的元素必須實現Comparable接口, TreeSet 類是它的唯一一份實現
          其它:
          1. 非同步的可以進行外部同步,或者使用Collections.synchronizedMap()的方法包裝成一個thread-safe的Map/Set
          2. LinkedHashMap支持兩種排序:插入順序、訪問順序。前者是指按照插入時的順序排序,后者是指按照最舊使用到最近使用的順序
          3. 既然 Set 在 HashMap 的基礎上實現, 那么 HashMap 和 HashSet 有什么區別嗎?
          答: HashMap提供get和put方法, 允許null 值和null 鍵; HashSet 提供add、remove、contains和size方法, 允許null 元素; 其它未知

          轉自:http://xu20cn.blog.51cto.com/274020/229009/
          posted on 2011-12-07 17:02 iLinux 閱讀(894) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 屏山县| 柏乡县| 荥经县| 邯郸市| 丽江市| 石狮市| 左云县| 漯河市| 塔城市| 青田县| 德庆县| 大方县| 高雄市| 牙克石市| 绥宁县| 永城市| 中江县| 遂平县| 南汇区| 阳高县| 加查县| 锦屏县| 古丈县| 瑞安市| 积石山| 贵州省| 梅河口市| 柳河县| 新竹市| 东乡县| 龙胜| 黄梅县| 韩城市| 嘉定区| 沐川县| 宝鸡市| 奎屯市| 大化| 滦南县| 绥化市| 云和县|