Java學習筆記之集合

概述:

List , Set, Map都是接口,前兩個繼承至Collection接口,Map爲獨立接口,數組

2,Set下有HashSet,LinkedHashSet,TreeSet安全

3,List下有ArrayList,Vector,LinkedList數據結構

4,Map下有Hashtable,LinkedHashMap,HashMap,TreeMap性能

5,Collection接口下還有個Queue接口,有PriorityQueue類spa

 

 

注意:線程

1,Queue接口與List、Set同一級別,都是繼承了Collection接口。code

2,看圖你會發現,LinkedList既能夠實現Queue接口,也能夠實現List接口.只不過呢, LinkedList實現了Queue接口。Queue接口窄化了對LinkedList的方法的訪問權限blog

(即在方法中的參數類型若是是Queue時,就徹底只能訪問Queue接口所定義的方法 了,而不能直接訪問 LinkedList的非Queue的方法),以使得只有恰當的方法才能夠使用。繼承

3,SortedSet是個接口,它裏面的(只有TreeSet這一個實現可用)中的元素必定是有序的。接口

 

Connection接口:

========================================

ArrayList(1)

  • 有序,可重複
  • 初始容量10 加載因子 1 擴容1.5倍
  • 底層數據結構是數組結構(查詢快,增刪慢)
  • 線程不安全,效率高

 

Vector

  • 有序,可重複
  • 初始容量10 加載因子1 擴容2倍
  • 底層數據結構是數組結構(查詢快,增刪慢)
  • 線程安全,效率低
  • 如有設置的初始容量使用設置的初始容量

======================================================

HashSet(2)

  • 無序,惟一
  • 初始容量是16(2的n次方) 加載因子0.75 擴容2倍
  • 底層實現是一個HashMap(保存不重複的數據),只是包含HashMap中的key而已,實現Set接口
  • 如有設置初始容量,則使用大於此初始容量的2的冪

TreeSet

  • 有序,惟一
  • 底層結構是TreeMap (紅黑樹--2叉樹中的一種)
  • TreeSet線程不安全,性能不如HashSet
  • 可是有序(天然順序,不是插入順序),不可重複
  • 插入元素若是爲非基本類型則須要可比性(Comparable、Comparator)

======================================================

 

Map接口:

======================================================
HashMap (3)(無序)

  • 默認初始容量是16(2的n次方) 加載因子0.75 擴容2倍
  • 底層數據結構是   jdk7:數組+鏈表

                            jdk8: 數組+鏈表+紅黑樹

  • 線程不安全,效率高
  • 如有設置初始容量,則使用大於此初始容量的2的冪。
  • 支持key跟value爲null
  • 當鏈表中節點數>=7 && capacity >=64,則將鏈表變成樹結構


HashTable(無序)

  • 默認初始容量爲11,加載因子爲0.75 擴容2倍+1
  • 底層數據結構是數組+鏈表
  • 線程安全,效率低
  • 如有設置初始容量,則使用此值。
  • 不支持key跟value爲null

TreeMap

  • 底層結構是紅黑樹(2叉樹中的一種) 有序(天然順序,不是插入順序)
  • TreeMap線程不安全
  • 插入元素若是爲非基本類型則須要可比性(Comparable、Comparator)
  • key不能爲null,value能夠爲null

======================================================

迭代器遍歷

 

 1 Set<String>  set = new TreeSet<String> ();  2         set.add("seven1");  3         set.add("seven2");  4         set.add("seven3");  5         set.add("seven4");  6         set.add("seven5");  7 // 遍歷  8 // for(String s : set){  9 // System.out.println(s); 10 // } 11 // 迭代器遍歷
12         Iterator<String> iterator = set.iterator(); 13         while(iterator.hasNext()){ 14  System.out.println(iterator.next()); 15         }
相關文章
相關標籤/搜索