java集合類HashMap、TreeMap等介紹

一、Map體系

Map和Set很像,其實,Set底層使用了Map集合。

Map

  |--Hashtable<K,V>:底層是哈希表數據結構,不可以存入null鍵null值,該集合是線程同步的,jdk1.0,效率低

  |--HashMap<K,V>:底層是哈希表數據結構,允許null鍵和null值,該集合是不同步的,jdk1.2,效率高,替代Hashtable

  |--TreeMap<K,V>:底層是二叉樹數據結構,線程不同步,可以用於給map集合中的鍵進行排序

 

Map集合取出元素的兩種方式

 

    原理:將map集合轉成set集合,再通過迭代器取出

 1,Set<K> keySet:返回此映射中包含的鍵的 Set 視圖,將Map中所有的鍵存入到Set集合,因爲set具備迭代器,所以可以迭代方式取出所有的鍵,再根據get方法,獲取每一個鍵對應的值

2,Set<Map.Entry<k,v>> entrySet():將map集合中的映射關係存入到了set集合中,而這個關係的數據類型就是:Map.Entry

 

HashMap集合

  1. 基於哈希表的 Map 接口的實現。效率高  
  2. 通過hashcode對其內容進行快速查找
  3. 此實現提供所有可選的映射操作,並允許使用 null 值和 null 鍵  
  4. 除了非同步和允許使用 null 之外,HashMap 類與 Hashtable 大致相同  
  5. 此類不保證映射的順序,特別是它不保證該順序恆久不變。  
  6. 爲了成功地在哈希表中存儲和獲取對象,用作鍵的對象必須實現 hashCode 方法和 equals 方法。

TreeMap集合

  1. 基於紅黑樹(Red-Black tree)的 NavigableMap 實現  
  2.  該映射根據其鍵的自然順序進行排序,
  3. 即實現了Map接口,實現了SortedMap接口
  4.  或者根據創建映射時提供的 Comparator 進行排序,具體取決於使用的構造方法 
  5.  不同步
  6. 在添加、刪除和定位映射關係上,TreeMap類要比HashMap類的性能差一些

 

使用集合的技巧

  1. 看到Array就是數組結構,有角標,查詢速度很快。
  2. 看到link就是鏈表結構:增刪速度快,而且有特有方法。addFirst; addLast; removeFirst(); removeLast(); getFirst();getLast();
  3. 看到hash就是哈希表,就要想要哈希值,就要想到唯一性,就要想到存入到該結構的中的元素必須覆蓋hashCode,equals方法。
  4. 看到tree就是二叉樹,就要想到排序,就想要用到比較。
  5. 比較的兩種方式:
  6. 一個是Comparable:覆蓋compareTo方法;
  7. 一個是Comparator:覆蓋compare方法。
  8. LinkedHashSet,LinkedHashMap:這兩個集合可以保證哈希表有存入順序和取出順序一致,保證哈希表有序。
  • 當存儲的是一個元素時,就用Collection。當存儲對象之間存在着映射關係時,就使用Map集合。
  • 保證唯一,就用Set。不保證唯一,就用List。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章