首頁  >  文章  >  类库下载  >  java集合你了解多少

java集合你了解多少

高洛峰
高洛峰原創
2016-11-01 13:02:481944瀏覽

用了java集合這麼久,還沒有系統的研究過java的集合結構,今天親自畫了下類圖,總算有所收穫。

java集合你了解多少

一、所有集合都實作了Iterable介面。

    Iterable介面中包含一個抽象方法:Iterator iterator();每個實作了這個方法的集合都會傳回一個Iterator物件。

    Iterator:它包含三個方法,hashNext(),next(),remove()三種方法,通過它們可以實現集合的遍歷和元素刪除,例如:

    Collection list = new ArrayList();

   list.add("a");   

   list.add("b");  

    list.add("c");;

    while (iterator .hasNext()) {  

         String element = iterator.next();

         System.out.println(element);/   System.out.println(list);//[a, b, c]      iterator = list.iterator();    iterator.next();

    iterator.remove();

 直接實作Iterator介面呢?因為:Iterator會攜帶目前集合的位置訊息,下次使用再使用的時候就非從0開始了;而Iterable介面每次都傳回一個Iterator物件(透過內部類別實作Iterator),各個迭代器之間互不影響。

 

二、ListIterator

 

    從AbstractList起封裝了public ListIterator

listIterator()方法,返回一個ListIterator,它在Iterator

listIterator()方法,返回一個ListIterator,它在Iterators(Paddious))可以實現雙向遍歷。

();

list.add("a");

list.add("b");

list.add("c"); = list.listIterator(3);

while (iterator.hasPrevious()) {

String element = iterator.previous();

System.out.println(element);//c,b,a }

 

三、比較

    ArrayList:允許存放重複元素,且元素是有順序的,隨機存取較為方便。

    LinkedList:鍊錶實現,插入與刪除時較優於ArrayList。

    HashSet:不允許重複元素且無序(雜湊函數對元素進行排序,可快速查詢),允許null值。

    TreeSet:紅黑樹排序,可進行排序,包含的元素要實作Comparable介面並定義compareTo方法,不允許null值。

    HashMap:執行緒不安全,key和值都允許null,判斷是否包含key要使用containsKey()方法,不允許重複key,hash數組的預設大小是16,而且一定是2的指數,重新計算hash值。

    HashTable:執行緒安全,key和value都不允許出現null值,不允許重複key,陣列預設大小是11,增加的方式是 old*2+1,使用包含物件的hash值。

 

四、Collections和Arrays

    Collections:java.util下的一個專用類,它包含有各種有關集合操作的靜態方法,可實現對各種集合的搜尋、排序、線程安全化等操作。

    Arrays:java.util下的一個專用類,用來操作array ,提供搜尋、排序、複製,轉換等靜態方法。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn