本文共 1461 字,大约阅读时间需要 4 分钟。
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。
主要方法:
boolean add(Object o)添加对象到集合
boolean remove(Object o)删除指定的对象int size()返回当前集合中元素的数量boolean contains(Object o)查找集合中是否有指定的对象boolean isEmpty()判断集合是否为空Iterator iterator()返回一个迭代器boolean containsAll(Collection c)查找集合中是否有集合c中的元素boolean addAll(Collection c)将集合c中所有的元素添加给该集合void clear()删除集合中所有元素void removeAll(Collection c)从集合中删除c集合中也有的元素void retainAll(Collection c)从集合中删除集合c中不包含的元素
List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置(按照元素插入顺序存储)。用户能够使用get()方法和索引来访问List中的元素。
LinkedList实现了Deque接口(Deque继承了Queue接口),继承AbstractSequentialList类,允许null元素,底层用双向链表实现,在添加删除方面比较便捷,按照添加顺序存储,没有初始大小。LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。注意:LinkedList是非同步方法。
ArrayList实现List接口,继承了AbstractList类,底层用可变大小的数组实现,允许所有元素,包括null,在随机访问元素方面比较便捷,按照添加元素顺序存储,初始大小为10,每次扩容当前大小的1/2。ArrayList可用作动态数组。
注意:ArrayList也是非同步的(unsynchronized),Vector非常类似ArrayList,但是Vector是同步的,而且 初始化大小为 10 ,扩容原来的一倍。对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。
Set是一种不包含重复的元素的Collection(Set最多有一个null元素),无序存储(HashSet不按照元素插入顺序存储,LinkedHashSet按照元素插入顺序存储,TreeSet按照设定的比较顺序进行排序存储)
不允许出现重复元素,不保证集合中元素的顺序,允许包含值为null的元素,但最多只能有一个null元素,查询速度比较快。
注意:ListHashSet可以按照存入元素顺序存储
不允许出现重复元素,底层用红-黑树结构存储,按照存入对象的判定顺序顺序存储(自定义对象要实现Comparable接口,重写compareTo方法)
转载地址:http://stwuo.baihongyu.com/