標籤:java 集合 collection map set
1.Set存放的元素是無序的不可重複。
2.List存放的元素為有序可重複。
3.重寫equals方法,一般最好重寫hasCode方法,當對象作為key的時候及索引,會使用hasCode方法進行尋找。
4.容器物件在調用remove,contains等方法時需要比較對象是否相等,這會涉及到物件類型的equals方法和
hashCode方法。對於自訂的類型,需要重寫equals和hashCode方法以實現自訂的對象相等規則。相等的對象
應該具有相等的hashCode。
5.ArrayList底層是動態數組實現的,便於尋找,讀快
6.LinkedList底層以雙向鏈表實現,便於插入和刪除,讀慢(Hash介於Array(讀快改慢)和Linked(改快讀慢)兩者之間)
7.Set容器類有HashSet,TreeSet等
8.Map介面的實作類別有HashMap(hash實現)和TreeMap(二叉樹實現)等。
9.以下是java中集合的思維導圖,總結了Java中集合的關係,區別,特點
由圖可以看出,Java中的集合由三部分主成,包括Map,Collection,Collections,
其中Map儲存的時key和value,Collection是Set和List的父類,Collections是集合的操作類,可以對集合進行處理。
Collection是List和Set的
下面先分析下Collection的源碼:
public interface Collection<E> extends Iterable<E> {/*size()函數返回集合的大小,即集合有多少個元素,傳回值為int型 * */int size();//判斷集合是否為空白,為空白則返回true,不為空白則返回falseboolean isEmpty();//判斷指定的元素是否在集合中,在則返回true,不再則返回falseboolean contains(Object o);//實現的iterator介面,把集合的元素轉換成迭代器進行輸出Iterator<E> iterator();//把集合元素轉換成Object數組Object[] toArray();// 返回包含此 collection 中所有元素的數組;返回數組的運行時類型與指定數組的運行時類型相同。 <T> T[] toArray(T[] a); //把元素e存放到集合中 boolean add(E e); //刪除集合中的元素o boolean remove(Object o); //是否包含指定的集合元素 boolean containsAll(Collection<?> c); //把集合元素c添加到本集合中 boolean addAll(Collection<? extends E> c); //移除機會中說有的集合元素c boolean removeAll(Collection<?> c); //僅保留此 collection 中那些也包含在指定 collection 的元素(可選操作)。 boolean retainAll(Collection<?> c); //清除所有的集合元素 void clear(); //重寫equals方法,用來判斷元素是否相等 boolean equals(Object o); //重寫的hashCode方法,輔助判斷元素是否相等,返回此 collection 的雜湊碼值 int hashCode();}
10.從上我們可以看出Collection繼承了了Iterable<E>介面,那麼我們在看看Iterable<E>介面的源碼,此介面只有3個函數:
public interface Iterator<E> {//剛開始迭代的指標是指向第一元素前面//如果仍有元素可以迭代,則返回 trueboolean hasNext();//返回迭代的下一個元素。E next();//從迭代器指向的 collection 中移除迭代器返回的最後一個元素(可選操作)。void remove();}
通過上面的基礎知識相信對java中集合的基礎知識應該有所瞭解,學東西要從源頭學習,才能學的紮實,所以有空的話,要多看源碼,學習源碼的思想和代碼風格。
本文為原創,轉載請著名來自:http://blog.csdn.net/j903829182/article/details/38497469