Collection架構(gòu)
Collection是一個接口,是高度抽象出來的集合透典,它包含了集合的基本操作和屬性。
Collection包含了List和Set兩大分支。
1).List是一個有序的隊列睦袖,每一個元素都有它的索引。第一個元素的索引值是0荣刑。
List的實現(xiàn)類有LinkedList, ArrayList, Vector, Stack馅笙。
2). Set是一個不允許有重復(fù)元素的集合伦乔。
Set的實現(xiàn)類有HashSet和TreeSet。HashSet依賴于HashMap董习,它實際上是通過HashMap實現(xiàn)的烈和;TreeSet依賴于TreeMap,它實際上是通過TreeMap實現(xiàn)的皿淋。Map是一個映射接口招刹,即key-value鍵值對。Map中的每一個元素包含“一個key”和“key對應(yīng)的value”窝趣。
AbstractMap是個抽象類疯暑,它實現(xiàn)了Map接口中的大部分API。而HashMap哑舒,TreeMap妇拯,WeakHashMap都是繼承于AbstractMap。
Hashtable雖然繼承于Dictionary洗鸵,但它實現(xiàn)了Map接口越锈。
Collection的定義如下:
public interface Collection<E> extends Iterable<E> {}
Collection所有 API
abstract boolean add(E object)
abstract boolean addAll(Collection<? extends E> collection)
abstract void clear()
abstract boolean contains(Object object)
abstract boolean containsAll(Collection<?> collection)
abstract boolean equals(Object object)
abstract int hashCode()
abstract boolean isEmpty()
abstract Iterator<E> iterator()
abstract boolean remove(Object object)
abstract boolean removeAll(Collection<?> collection)
abstract boolean retainAll(Collection<?> collection)
abstract int size()
abstract <T> T[] toArray(T[] array)
abstract Object[] toArray()
List
public interface List<E> extends Collection<E> {}
List相比Collection新增的接口
abstract void add(int location, E object)
abstract boolean addAll(int location, Collection<? extends E> collection)
abstract E get(int location)
abstract int indexOf(Object object)
abstract int lastIndexOf(Object object)
abstract ListIterator<E> listIterator(int location)
abstract ListIterator<E> listIterator()
abstract E remove(int location)
abstract E set(int location, E object)
abstract List<E> subList(int start, int end)
Set
public interface Set<E> extends Collection<E> {}
Set的API和Collection完全一樣。
AbstractCollection
public abstract class AbstractCollection<E> implements Collection<E> {}
AbstractCollection是一個抽象類膘滨,它實現(xiàn)了Collection中除iterator()和size()之外的函數(shù)甘凭。
AbstractCollection的主要作用:它實現(xiàn)了Collection接口中的大部分函數(shù)。從而方便其它類實現(xiàn)Collection火邓,比如ArrayList对蒲、LinkedList等,它們這些類想要實現(xiàn)Collection接口贡翘,通過繼承AbstractCollection就已經(jīng)實現(xiàn)了大部分的接口了。
AbstractList
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {}
AbstractList是一個繼承于AbstractCollection砰逻,并且實現(xiàn)List接口的抽象類鸣驱。它實現(xiàn)了List中除size()、get(int location)之外的函數(shù)蝠咆。
AbstractList的主要作用:它實現(xiàn)了List接口中的大部分函數(shù)踊东。從而方便其它類繼承List。
另外刚操,和AbstractCollection相比闸翅,AbstractList抽象類中,實現(xiàn)了iterator()接口菊霜。
AbstractSet
public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E> {}
AbstractSet是一個繼承于AbstractCollection坚冀,并且實現(xiàn)Set接口的抽象類。由于Set接口和Collection接口中的API完全一樣鉴逞,Set也就沒有自己單獨的API记某。和AbstractCollection一樣司训,它實現(xiàn)了Set中除iterator()和size()之外的函數(shù)。
AbstractSet的主要作用:它實現(xiàn)了Set接口中的大部分函數(shù)液南。從而方便其它類實現(xiàn)Set接口壳猜。