Collection集合总结
所有集合的根接口是Collection,Collection下分了两个派系,List和Set,List可重复,Set不可重复。
Collection
Collection 层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现。此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。
方法
boolean add(E o)添加某元素到集合中
boolean addAll(Collection<? extends E> c)将指定 collection 中的所有元素都添加到此 collection 中(可选操作)
void clear()清空集合下的所有元素,集合对象依然存在
boolean contains(Object o)判断对象是否存在集合中,存在返回true,不存在返回false
boolean containsAll(Collection<?> c)如果此 collection 包含指定 collection 中的所有元素,则返回 true
boolean equals(Object o)比较此 collection 与指定对象是否相等
int hashCode()返回此 collection 的哈希码值
boolean isEmpty()判断集合是否为空,为空返回true,不为空返回false
Iterator<E> iterator()返回在此 collection 的元素上进行迭代的迭代器(Iterator<E>)
boolean remove(Object o)移除某个元素,如果多个删除第一个,成功删除返回true,不成功返回false
boolean removeAll(Collection<?> c)移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)
boolean retainAll(Collection<?> c)仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)
int size()返回此 collection 中的元素数
Object[] toArray()集合转成数组,返回的是Object类型的数组,但是数组长度不可变(相当于final类型,不能增加元素否则报错)
<T> T[] toArray(T[] a)返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同
List
有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。与 set 不同,列表通常允许重复的元素。更正式地说,列表通常允许满足 e1.equals(e2) 的元素对 e1 和 e2,并且如果列表本身允许 null 元素的话,通常它们允许多个 null 元素。难免有人希望通过在用户尝试插入重复元素时抛出运行时异常的方法来禁止重复的列表,但我们希望这种用法越少越好。
特有方法
boolean add(int index, E element)追加指定 collection 中的所有元素到此列表的结尾,顺序是指定 collection 的迭代器返回这些元素的顺序(可选操作)
boolean addAll(int index, Collection<? extends E> c)将指定 collection 中的所有元素都插入到列表中的指定位置(可选操作)
E get(int index) 返回列表中指定位置的元素
int indexOf(Object o)返回列表中首次出现指定元素的索引,如果列表不包含此元素,则返回
int lastIndexOf(Object o)返回列表中最后出现指定元素的索引,如果列表不包含此元素,则返回 -1
ListIterator<E> listIterator()返回列表中元素的列表迭代器(以正确的顺序)
ListIterator<E> listIterator(int index)返回列表中元素的列表迭代器(以正确的顺序),从列表的指定位置开始
boolean remove(int index)移除列表中指定位置的元素(可选操作)
int set(int index, E element)用指定元素替换列表中指定位置的元素(可选操作)
List<E> subList(int fromIndex, int toIndex)返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图
ArrayList
List 接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括 null(可以存放很多null值)在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。(此类大致上等同于 Vector 类,除了此类是不同步的(线程不安全)。)查询数据时效率比较高,而对于数组插入和删除操作,则效率会比较低 和LinkedList相反
特有方法
Object clone()返回此 ArrayList 实例的浅表复制
void ensureCapacity(int minCapacity)如有必要,增加此 ArrayList 实例的容量,以确保它至少能够容纳最小容量参数所指定的元素数
protected void removeRange(int fromIndex, int toIndex) 移除列表中索引在 fromIndex(包括)和 toIndex(不包括)之间的所有元素
void trimToSize()将此 ArrayList 实例的容量调整为列表的当前大小
LinkedList
List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)(可以存放很多null值)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列 (deque),此类是不同步的(线程不安全)。查询数据时效率比较低,而对于数组插入和删除操作,则效率会比较高
特有方法
void addFirst(E o)将给定元素插入此列表的开头
void addLast(E o)将给定元素追加到此列表的结尾
Object clone()返回此 ArrayList 实例的浅表复制
E getFirst()返回此列表的第一个元素
E getLast()返回此列表的最后一个元素
boolean offer(E o)将指定元素添加到此列表的末尾(最后一个元素)
E peek() 找到但不移除此列表的头(第一个元素)
E poll()找到并移除此列表的头(第一个元素)和 removeFirst()一样
E remove()找到并移除此列表的头(第一个元素)和 removeFirst()一样
E removeFirst()移除并返回此列表的第一个元素
E removeLast()移除并返回此列表的最后一个元素
Set
一个不包含重复元素的 collection。更正式地说,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素。正如其名称所暗示的,此接口模仿了数学上的 set 抽象。set取值方式只有迭代器和增强for,因为set的每个值是没有索引的
特有方法
和Collection父接口一模一样
HashSet
此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证集合的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null (只能存放一个null)元素,线程不安全,存取都比较快(存放方法:先拿要存放的元素与集合中所有元素的hasCode值作比较,如果不同直接存放,如果相同再比较equals方法,如果相同则判断为同一元素,如果不同则用链表把这个元素挂在相同hasCode元素的下面)
特有方法
和Set集合一样
LinkedHashSet
父类HashSet,LinkedHashSet具有可预知迭代顺序的 Set 接口(存放的元素有序) (只能存放一个null)的哈希表和链接列表实现。此实现与 HashSet 的不同之外在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,即按照将元素插入到集合中的顺序(插入顺序)进行迭代。注意,插入顺序不受在集合中重新插入的元素的影响。(如果在 s.contains(e) 返回 true 后立即调用 s.add(e),则元素 e 会被重新插入到集合 s 中。)线程不安全
特有方法
和HashSet一样
TreeSet
此类实现 Set 接口,该接口由 TreeMap 实例支持。此类保证排序后的 set 按照升序排列元素, (不能存放null)根据使用的构造方法不同,可能会按照元素的自然顺序 进行排序(参见 Comparable),或按照在创建 set 时所提供的比较器进行排序。线程不安全
特有方法
Comporetor<? super E> comparator()返回用于确定已排序 set 顺序的比较器,或者,如果此树 set 使用其元素的自然顺序,则返回 null
E first()返回已排序 set 中当前的第一个(最小)元素
SortedSet<E> headSet(E toElement)返回此 set 的部分视图,要求其元素严格小于 toElement
E last()返回已排序 set 中当前的最后一个(最大)元素
SortedSet<E> subSet(E fromElement, E toElement)返回此 set 的部分视图,其元素从 fromElement(包括)到 toElement(不包括)
SortedSet<E> tailSet(E fromElement)返回 set 的部分视图,其元素大于或等于 fromElement