(一)Collection分类体系
(二)List、Set、Queue子接口
1,Collection体系下面是Set、List、Queue子接口;
List:有序集合,值允许有重复;
我们需要可以自动扩展的数组,所以有了List;
List集合可以说与数组的区别就在于长度可变,它同样可以如数组下标那样记住每次添加元素的顺序,List集合集合中的元素值同样也可以重复。Set:无序集合,值不允许有重复;
Set集合与List集合恰好相反:
1:Set集合是无序的,无法像数组那样通过下标找到对应的元素;不是后续添加到Set中的元素就排在后面,因为没有排队这一说。
2:Set集合的元素是不能重复的,因为本来就没有顺序了,如果还可以重复那就乱到无法管理了。Queue:JDK1.5以后Java提供的队列实现,有点类似于List;
;
我们需要值没有重复的数组,所以有了Set;我们需要自动排序的Set,所以又有了TreeSet;
2,实现类
我们平常用的最多就是它们的实现类,有的实现类并不是直接继承这三个子接口,也不是只能继承其中的一个接口而已。
栗子1
根据源码,可以知道HashSet是Set接口的实现,同时它还继承了AbstractSet这个父类(该父类也实现了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类不仅实现了List接口,还实现了Deque接口(Deque接口是Queue接口的子接口)
public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable{
}
常用实现类
我们常用的List集合有:Vector、LinkedList、ArrayList;
我们常用的Set集合有:HashSet、TreeSet;
不管是直接还是间接,Vector、LinkedList、ArrayList都实现了List接口;
HashSet、TreeSet都实现了Set接口;
Queue这里暂时不做阐述;