Map集合
按<鍵,值>對的形式存儲元素
put( k, v), containsKey( k ), containsValue( v ) , get( k ), remove( k )
keyset() , values(), entrySet()
底層是哈希表(散列表), 哈希表就是一個數(shù)組, 數(shù)組的每個元素是一個單向鏈表
底層是哈希表, 它是線程安全的, HashMap不是線程安全的
初始化容量:11, HashMap初始化容量: 16
加載因子: 0.75, 當<鍵,值>對的數(shù)量大于 哈希桶容量 * 加載因子時, 哈希桶擴容
HashTable默認擴容: 2倍 + 1 , HashMap擴容: 2倍
HashTable的鍵與值都不能為null, HashMap的鍵與值可以為null
創(chuàng)建HashTable時, 可以指定初始化容量; HashMap會自動把初始化容量調整為2的冪次方,就是為了快速計算數(shù)組的下標
繼承了HashTable, 鍵與值都是String類型
經(jīng)常用于設置/讀取系統(tǒng)屬性值
一般情況下, 系統(tǒng)屬性會保存在配置文件中, 可以通過Properties讀取配置文件的內容, 也可以使用ResouceBundle讀取配置文件的屬性
實現(xiàn)了SortedMap接口, 可以根據(jù)鍵自然排序, 要求鍵必須是可比較的
要么指定Comparator比較器, 如果沒有Comparator比較器,鍵需要實現(xiàn)Comparable接口
Comparator比較與Comparable如何選擇?
對于TreeMap來說, 先根據(jù)Comaparator比較器進行比較大小 , 如果沒有Comparator比較器, 再選擇Comparable接口。
對于開發(fā)人員來說, 一般通過實現(xiàn)Comparable接口定義一個默認的比較規(guī)則 , 通過Comparator比較器定義若干不能同的排序規(guī)則。
如果不需要根據(jù)鍵排序就選擇HashMap, 如果需要根據(jù)鍵排序就選擇TreeMap。
如果在多線程程序中, 使用java.util.concurrent包中的類,如果不需要根據(jù)鍵排序選擇ConcurrentHashMap, 如果需要根據(jù)鍵排序選擇ConcurrentSkipListMap
編寫用戶的注冊與登錄程序, 使用Map保存用戶名與密碼