集合框架概述集合框架是Java中非常重要的一種數據結構它是用來存儲對象的一個容器在容器中可以存放多個多類型的元素集合的概念進一步提高了java的封裝思想數據的雜亂多現象用類來封裝把各個需要的數據封裝到一個具體類中一類的形式體現對象的特性集合是用來存儲類多的現象一層層的往上封裝體現給用戶只是一個簡單的接口這在程序的開發和閱讀性減輕的代碼的復雜度java的擴平台易擴展特性充分體現出這一點這是我個人的理解集合中存放的元素不同根據這些元素做了相應的處理和存儲根據不同的存儲結構集合分為了List集合和Set集合兩大分支List集合的特點就是元素具備角標對List集合中元素的訪問也多了一種方式就是按照角標操作List集合中的元素可以重復Set集合的特點是元素不具備角標元素不能重復對元素的訪問使用Iterator迭代器
集合的分類及特點Collection|——list元素是有序的元素可以重復因為該集合體系有索引取元素方式有兩種一種是for循環一種是迭代器
ArrayList底層數組結構特點增加刪除比較慢查詢速度快線程不同步
linkedList底層是鏈表結構特點增加刪除比較快查詢速度慢
特有方法addFirst()addLast()getFirst()getLast()獲取元素但不刪除元素如果沒有元素會出現NoSuchElementException removeFirst()removeLast()獲取元素但是元素被刪除如果沒有元素會出現NoSuchElementException在JDK出現了替代方法
OfferFirst()OfferLast()peekFirst()peekFirst()獲取元素但不刪除元素如果沒有元素不會出現NoSuchElementException pollFirst()pollLast()獲取元素但是元素被刪除如果沒有元素不會出現NoSuchElementException vector底層是數組結構線程同步增刪改查速度都慢被ArrayList代替
枚舉是vector特有的取出方式vector有三種取出方式枚舉和迭代器很像
其實枚舉和迭代是一樣的因為枚舉的名稱以及方法的名稱比較長被迭代器取代了
List集合判斷元素是否相等使用是自身的equals方法默認的equals方式比較的是地址值當我們比較元素是否相等時如果判斷的條件不一樣時需要復寫equals方法
|——set元素是無序元素不重復Set集合的方法和Collection是一致的
|——HashSet底層結構式哈希表
在對HashSet集合存儲元素的時候首先調用hashCode()方法獲得給對象的哈希值當以後加入元素時也是首先獲得該元素的哈希值然後跟集合中已有元素的h哈希值比較如果哈希值不等不會調用equals()方法元素存儲成功如果新加元素和已有某個元素的哈希值相同在調用equals()判斷是否為同一元素做進一步的判斷這個可以根據自己的條件復寫hashCode()和equals()HashSet集合對元素不會進行默認排序
注意對於判斷元素是否存在以及刪除等操作依賴的方法是元素hashCode和equals |——TreeSet可以對set集合中的元素進行排序TreeSet集合中的元素要具備比較性存儲多個不具備比較性的元素編譯時會報錯是元素具備比較性的方式有兩種實現comparable接口和在創建集合時傳遞比較器comparator
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27284.html