Vincent Jia 博客

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

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

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

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 和林格尔县| 南投县| 乃东县| 东丽区| 三门县| 山西省| 博罗县| 如东县| 开封市| 梧州市| 城步| 南溪县| 迁西县| 万载县| 长顺县| 错那县| 泊头市| 鲁山县| 兴业县| 邛崃市| 绵阳市| 错那县| 廉江市| 临邑县| 盘锦市| 东港市| 灵石县| 伽师县| 安宁市| 娄底市| 金山区| 读书| 纳雍县| 枣庄市| 金秀| 湛江市| 临潭县| 全南县| 许昌县| 正宁县| 梁山县|