(一)Collection分類體系

(二)List、Set、Queue子接口
1,Collection體系下面是Set、List、Queue子接口;
List:有序集合,值允許有重復;
我們需要可以自動擴展的數(shù)組,所以有了List;
List集合可以說與數(shù)組的區(qū)別就在于長度可變,它同樣可以如數(shù)組下標那樣記住每次添加元素的順序,List集合集合中的元素值同樣也可以重復。Set:無序集合,值不允許有重復;
Set集合與List集合恰好相反:
1:Set集合是無序的,無法像數(shù)組那樣通過下標找到對應的元素;不是后續(xù)添加到Set中的元素就排在后面,因為沒有排隊這一說。
2:Set集合的元素是不能重復的,因為本來就沒有順序了,如果還可以重復那就亂到無法管理了。Queue:JDK1.5以后Java提供的隊列實現(xiàn),有點類似于List;
;
我們需要值沒有重復的數(shù)組,所以有了Set;我們需要自動排序的Set,所以又有了TreeSet;
2,實現(xiàn)類
我們平常用的最多就是它們的實現(xiàn)類,有的實現(xiàn)類并不是直接繼承這三個子接口,也不是只能繼承其中的一個接口而已。
栗子1
根據(jù)源碼,可以知道HashSet是Set接口的實現(xiàn),同時它還繼承了AbstractSet這個父類(該父類也實現(xiàn)了Set接口)
public class HashSet<E>
extends AbstractSet<E>
implements Set<E>, Cloneable, java.io.Serializable{
}
public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E> {
}
栗子2
LinkedList類不僅實現(xiàn)了List接口,還實現(xiàn)了Deque接口(Deque接口是Queue接口的子接口)
public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable{
}
常用實現(xiàn)類
我們常用的List集合有:Vector、LinkedList、ArrayList;
我們常用的Set集合有:HashSet、TreeSet;
不管是直接還是間接,Vector、LinkedList、ArrayList都實現(xiàn)了List接口;
HashSet、TreeSet都實現(xiàn)了Set接口;
Queue這里暫時不做闡述;