面試準備之集合接口及底層及特點描述

基本上找到的上層就是Collection、Map、Dictionary啦~,

首先說一下Collection和Map的區別,Collection是鏈表數組類型的集合List、Set,只包含一種數據結構,而Map是鍵值對類型的集合,包含着AbstractMap。

下面說一下List和Set的區別,其實很簡單啦  List有序而Set無序,而且List可以添加重複的元素哦 Set可不行,

這裏引用一下,說明一下Set和List的區別

 

List:1.可以允許重複的對象。

 2.可以插入多個null元素。

        3.是一個有序容器,保持了每個元素的插入順序,輸出的順序就是插入的順序。

        4.常用的實現類有 ArrayList、LinkedList 和 Vector。ArrayList 最爲流行,它提供了使用索引的隨意訪問,而 LinkedList 則對於經常需要從 List 中添加或刪除元素的場合更爲合適。(因爲鏈表的增加和刪除比數組快,注意底層)

Set:1.不允許重複對象

  2. 無序容器,你無法保證每個元素的存儲順序,TreeSet通過 Comparator  或者 Comparable 維護了一個排序順序。

        3. 只允許一個 null 元素

        4.Set 接口最流行的幾個實現類是 HashSet、LinkedHashSet 以及 TreeSet。最流行的是基於 HashMap 實現的 HashSet;TreeSet 還實現了 SortedSet 接口,因此 TreeSet 是一個根據其 compare() 和 compareTo() 的定義進行排序的有序容器。

https://www.cnblogs.com/IvesHe/p/6108933.html

這時候問題來了,一個寶寶問:那Map接口下的集合就不能排序了嘛?一下是解決方案

  1. public static void main(String[] args){

  2.  
  3. Map<String,String> map = new HashMap();

  4. map.put("A","@");

  5. map.put("W","@");

  6. map.put("E","@");

  7. map.put("Q","@");

  8. map.put("R","@");

  9. map.put("B","@");

  10. map.put("U","@");

  11.  
  12. //這樣能得到map的key和value,在某些應用中,這很有用

  13. for(Entry<String,String> entry:map.entrySet()){

  14. System.out.println(entry.getKey()+""+entry.getValue());

  15. }

  16.  
  17. //如果想對Map集合的元素按照key進行排序怎麼辦?如下,用Collections.sort方法

  18. List<Map.Entry<String, String>> list = new LinkedList<>(map.entrySet());

  19.  
  20. Collections.sort(list, new Comparator<Map.Entry<String, String>>() {

  21. @Override

  22. public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) {

  23. return (o1.getKey()).compareTo(o2.getKey());

  24. }

  25. });

  26.  
  27. System.out.println(list);

  28. }

 

然後就開始說Map下的hashMap TreeMap 和ConcurrentHashMap了

HashMap太多了  主要就是線程不安全,但人家速度快啊,那爲了解決這個問題ConcurrentHashMap來了

ConcurrentHashMap有 concurrencyLevel:並行級別、併發數、Segment 數,怎麼翻譯不重要,理解它。默認是 16,也就是說 ConcurrentHashMap 有 16 個 Segments,所以理論上,這個時候,最多可以同時支持 16 個線程併發寫,只要它們的操作分別分佈在不同的 Segment 上。這個值可以在初始化的時候設置爲其他值,但是一旦初始化以後,它是不可以擴容的。這裏不贅述,相信可參考http://www.importnew.com/28263.html

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