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

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

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

    Picses' sky

    Picses' sky
    posts - 43, comments - 29, trackbacks - 0, articles - 24

    Collection Framework study tips[zz]

    Posted on 2007-07-18 15:01 Matthew Chen 閱讀(175) 評論(0)  編輯  收藏 所屬分類: Java SE

     

    HashSet 類和 TreeSet 類

    “集合框架”支持 Set 接口兩種普通的實現:HashSet 和 TreeSet。在更多情況下,您會使用 HashSet 存儲重復自由的集合。考慮到效率,添加到 HashSet 的對象需要采用恰當分配散列碼的方式來實現 hashCode() 方法。雖然大多數系統類覆蓋了 Object 中缺省的 hashCode() 實現,但創建您自己的要添加到 HashSet 的類時,別忘了覆蓋 hashCode()。當您要從集合中以有序的方式抽取元素時,TreeSet 實現會有用處。為了能順利進行,添加到 TreeSet 的元素必須是可排序的。 “集合框架”添加對 Comparable 元素的支持,在排序的“可比較的接口”部分中會詳細介紹。我們暫且假定一棵樹知道如何保持 java.lang 包裝程序器類元素的有序狀態。一般說來,先把元素添加到 HashSet,再把集合轉換為 TreeSet 來進行有序遍歷會更快。

    為優化 HashSet 空間的使用,您可以調優初始容量和負載因子。TreeSet 不包含調優選項,因為樹總是平衡的,保證了插入、刪除、查詢的性能為 log(n)。

    HashSet 和 TreeSet 都實現 Cloneable 接口。
    HashSet中重復添加相同元素,HashSet中只有一個這樣的元素,并不重復。
    TreeSet中元素按升序排列

    HashMap 類和 TreeMap 類
    “集合框架”提供兩種常規的 Map 實現:HashMap 和 TreeMap。和所有的具體實現一樣,使用哪種實現取決于您的特定需要。在 Map 中插入、刪除和定位元素,HashMap 是最好的選擇。但如果您要按順序遍歷鍵,那么 TreeMap 會更好。根據集合大小,先把元素添加到 HashMap,再把這種映射轉換成一個用于有序鍵遍歷的 TreeMap 可能更快。使用 HashMap 要求添加的鍵類明確定義了 hashCode() 實現。有了 TreeMap 實現,添加到映射的元素一定是可排序的。我們將在排序中詳細介紹。

    為了優化 HashMap 空間的使用,您可以調優初始容量和負載因子。這個 TreeMap 沒有調優選項,因為該樹總處于平衡狀態。
    HashMap 和 TreeMap 都實現 Cloneable 接口。
    HashMap中重復添加相同元素,HashMap中只有一個這樣的元素,并不重復。
    Hashtable 類和 Properties 類是 Map 接口的歷史實現。


    “集合框架”提供了個特殊的 Set 接口:SortedSet,它保持元素的有序順序。
    該接口為集的子集和它的兩端(即頭和尾)提供了訪問方法。當您處理列表的子集時,更改子集會反映到源集。此外,更改源集也會反映在子集上。發生這種情況的原因在于子集由兩端的元素而不是下標元素指定。此外,如果 fromElement 是源集的一部分,它就是子集的一部分。但如果 toElement 是源集的一部分,它卻不是子集的一部分。如果您想要一個特殊的高端元素(to-element)在子集中,您必須找到下一個元素。對于一個 String 來說,下一個元素是個附帶空字符的同一個字符串(string+"\0")。;
    添加到 SortedSet 的元素必須實現 Comparable,否則您必須給它的實現類的構造函數提供一個 Comparator:TreeSet(您可以自己實現接口。但是“集合框架”只提供這樣一個具體的實現類。)

    “集合框架”提供了個特殊的Map 接口:SortedMap,它用來保持鍵的有序順序。
    此接口為映射的子集包括兩個端點提供了訪問方法。除了排序是作用于映射的鍵以外,處理 SortedMap 和處理 SortedSet 一樣。“集合框架”提供的實現類是 TreeMap。
    因為對于映射來說,每個鍵只能對應一個值,如果在添加一個鍵-值對時比較兩個鍵產生了零返回值(通過 Comparable 的 compareTo() 方法或通過 Comparator 的 compare() 方法),那么,原始鍵對應值被新的值替代。如果兩個元素相等,那還好。但如果不相等,那么您就應該修改比較方法,讓比較方法和 equals() 的效果一致。

    主站蜘蛛池模板: 永久免费AV无码网站在线观看| 一级毛片在线免费观看| 欧洲美熟女乱又伦免费视频| 亚洲成A∨人片在线观看无码| 91人成网站色www免费下载| 精品日韩亚洲AV无码一区二区三区| baoyu122.永久免费视频| 久久精品国产亚洲综合色| 国产好大好硬好爽免费不卡| 免费国产黄网站在线看| 免费吃奶摸下激烈视频| 老司机午夜在线视频免费观| 亚洲国产天堂久久综合| 三级黄色片免费看| 久久久久无码精品亚洲日韩| 亚洲人成免费电影| 亚洲色成人WWW永久在线观看| 四只虎免费永久观看| 亚欧国产一级在线免费| 亚洲av之男人的天堂网站| 久久99国产综合精品免费| 亚洲fuli在线观看| 国产大片91精品免费看3| 91国内免费在线视频| 91久久亚洲国产成人精品性色 | 久久久久久亚洲精品| 精品无码AV无码免费专区| 亚洲午夜理论片在线观看| 亚洲精品WWW久久久久久| 免费人成在线观看网站| 亚洲AV无码乱码在线观看代蜜桃 | 免费观看成人毛片a片2008| 国产精品亚洲а∨无码播放麻豆| JLZZJLZZ亚洲乱熟无码| 永久在线免费观看| 国产AV日韩A∨亚洲AV电影| 亚洲av日韩综合一区在线观看| 成人免费视频小说| 你是我的城池营垒免费观看完整版| 97se亚洲综合在线| 亚洲av手机在线观看|