java集合你瞭解多少?,java集合瞭解

來源:互聯網
上載者:User

java集合你瞭解多少?,java集合瞭解

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

 

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

    Iterable介面中包含一個抽象方法:Iterator<T> iterator();每個實現了這個方法的集合都會返回一個Iterator對象。

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

    Collection<String> list = new ArrayList<String>();

   list.add("a");   

   list.add("b");  

    list.add("c");

    Iterator<String> iterator = list.iterator();

    while (iterator.hasNext()) {  

         String element = iterator.next();

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

    }  

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

    iterator.remove();

    System.out.println(list);//[b, c]

    ps:為什麼不直接實現Iterator介面呢?因為:Iterator會攜帶當前集合的位置資訊,下次使用再使用的時候就非從0開始了;而Iterable介面每次都返回一個Iterator對象(通過內部類實現Iterator),各個迭代器之間互不影響。

 

二、ListIterator

 

    從AbstractList起封裝了public ListIterator<E> listIterator()方法,返回一個ListIterator,它在Iterator的基礎上增加了add(),previous(),hasPrevious()等方法,可以實現雙向遍曆。

AbstractList<String> list = new ArrayList<String>();

list.add("a");

list.add("b");

list.add("c");

ListIterator<String> iterator = 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 ,提供搜尋、排序、複製,轉換等靜態方法。

 

關注老薑談技術,號:helojava,或者掃描下面二維碼。


每日一帖,技術雞湯。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.