1. 程式人生 > >Day-11 java-Map、Hash等問題

Day-11 java-Map、Hash等問題

Set

  1. 不重複
  2. 無序

Map

  1. 對映
  2. Key – value,稱為Entry
  3. Map的size就是entry的數量
  4. Map介面是單獨的介面,沒有繼承任何介面,與之前的jdk版本不同
  5. put放入元素
  6. get(key) 提取元素
  7. 迭代 entrySet keySet
  8. HashMap.hash()方法的意義、
    將新的hash值跟更多的特徵值相關
  9. HashSet的內部是通過HashMap實現的
Node<k,v>
Class Node<k,v>{
		int hash;  //新hash
		final K key;  //key不能修改
		V value  //value
Node<k,v> next;
}
  1. 元素是否重複的判斷標準

p.hash==hash&&((k=p.key)=key | | (key!=null && key.equals(k)))
Map集合常用類:
Hashtable:執行緒安全,速度慢,不允許存放null鍵,null值,已被HashMap替代。
HashMap:執行緒不安全,速度快,允許存放null。
TreeMap:對鍵進行排序。

Hash

雜湊演算法可以將任意長度的二進位制值引用為較短的且固定長度的二進位制值,把這個小的二進位制值稱為雜湊值。

Set介面中常用的類:

HashSet:執行緒不安全,存取速度快。
TreeSet:執行緒不安全,可以對set集合中的元素進行排序。
Set集合元素唯一性的原因:
HashSet:通過hashCode()方法、==和equals();方法來保證元素唯一性。
TreeSet:通過compareTo或者compare方法中的來保證元素的唯一性,元素以二叉樹形式存放。