關於java的集合

集合

爲何用集合不用數組

數組的長度是固定,集合的長度是能夠動態改變的java

應用場景

  • 沒法預測存儲數據的數量數組

  • 存儲具備一對一關係的數據code

  • 數據的增刪對象

  • 數據重複問題,用set集合解決blog

注意

集合只能使用引用數據類型,雖然數字能傳進去,實際上是java內部的一個自動裝箱的操做(如int型轉成了Integer型)排序

體系結構

  • ArrayList底層是數組實現的,因此是連續存儲,查詢快接口

  • LinkedList底層是雙向鏈表實現的,增長和刪除快,查詢快rem

  • HashSet是哈希表實現的,是無序的,他元素能夠是null,但只能有一個nullget

  • TreeSet是基於二叉樹實現的,能夠自動排序,不容許放nullhash

  • HashMap適用於在Map插入、刪除和定位元素

  • TreeMap適用於按天然順序對鍵值對進行遍歷

List集合

ArrayList

無參構造是默認初始化容量10

數組實現,有序可重複

可動態增加

元素可有null

Set集合

元素無需且不可重複

只容許一個null元素

set集合在讀取數據的時候不容許刪除操做

set.remove(collection c)支持從set中刪除c這樣的子集

//刪除年齡大於5個月的並從新輸出
    Set<Cat> newSet= new HashSet<Cat>();
    for (Cat c:set) {
      if (c.getMonth()>10)
        newSet.add(c);
    }
    set.removeAll(newSet);

hashCode和equals方法的做用

當添加一個數據的時候,會調用hashCode()方法,獲得hash code值,經過這個值能夠找到數據的存儲位置(不是單個位置,是一片區域,該區域的hash code值是相等的),當能找到這個位置時,在用equals比較數據是否相等,相等就重複了,不相等就進行存儲
若是兩個對象相等,那麼它hashCode值必定相等,反之則不必定,還須要equals比較

Map

特徵

  • Map的數據是以鍵值對(k-v)形式存儲的

  • k-v以Entry類型的對象實例存在

  • 可用經過key快速查找到value的值

  • 一個映射不能包含重複的鍵,k不能重複,v能夠重複

  • 每一個鍵最多隻能映射到一個值

HashMap

特徵

  • 基於哈希表的Map接口實現

  • 容許使用null鍵和null值,但null鍵只能有一個

  • key值不容許重複

  • HashMap的Entry對象是無序排列的

相關文章
相關標籤/搜索