• <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • Java面向對象
    Java異常
    Java數組
    Java常用類
    Java集合
    Java IO流
    Java線程
    Java反射
    Socket編程
    Java注解開發
    Java GoF設計模式
    HashMap
    Java內存模型
    Java線性表

    Java Map集合小結

     

     

    Map集合

     

    按<鍵,值>對的形式存儲元素

     

    put( k, v),  containsKey( k ),  containsValue( v ) , get( k ),  remove( k )

     

    keyset()  ,  values(),  entrySet()

     

     

    HashMap

     

    底層是哈希表(散列表),  哈希表就是一個數組, 數組的每個元素是一個單向鏈表

     

     

    HashTable

     

    底層是哈希表, 它是線程安全的, HashMap不是線程安全的

     

    初始化容量:11, HashMap初始化容量: 16

     

    加載因子: 0.75,  當<鍵,值>對的數量大于 哈希桶容量 * 加載因子時,  哈希桶擴容

     

    HashTable默認擴容: 2倍 + 1  ,  HashMap擴容: 2倍

     

    HashTable的鍵與值都不能為null,  HashMap的鍵與值可以為null

     

    創建HashTable時, 可以指定初始化容量;   HashMap會自動把初始化容量調整為2的冪次方,就是為了快速計算數組的下標

     

     

    Properties

     

    繼承了HashTable, 鍵與值都是String類型

     

    經常用于設置/讀取系統屬性值

     

    一般情況下, 系統屬性會保存在配置文件中, 可以通過Properties讀取配置文件的內容, 也可以使用ResouceBundle讀取配置文件的屬性

     

     

    TreeMap

     

    實現了SortedMap接口, 可以根據鍵自然排序, 要求鍵必須是可比較的

     

    要么指定Comparator比較器, 如果沒有Comparator比較器,鍵需要實現Comparable接口

     

    Comparator比較與Comparable如何選擇?

     

    對于TreeMap來說, 先根據Comaparator比較器進行比較大小 , 如果沒有Comparator比較器, 再選擇Comparable接口。

     

    對于開發人員來說, 一般通過實現Comparable接口定義一個默認的比較規則 , 通過Comparator比較器定義若干不能同的排序規則。

     

     

    如何選擇Map?

     

    如果不需要根據鍵排序就選擇HashMap, 如果需要根據鍵排序就選擇TreeMap。

     

    如果在多線程程序中, 使用java.util.concurrent包中的類,如果不需要根據鍵排序選擇ConcurrentHashMap, 如果需要根據鍵排序選擇ConcurrentSkipListMap

     

     

    練習:

     

    編寫用戶的注冊與登錄程序, 使用Map保存用戶名與密碼

     

    全部教程
  • <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • 面对面棋牌游戏