Java中Collection的继承关系图, 虚线表示接口, 实线表示类
int size()
: 返回集合大小boolean isEmpty()
: 是否为空Iterator<E> iterator()
: 返回迭代器Object[] toArray()
: 把集合转成数组<T> T[] toArray(T[] a)
: 这个腹黑的方法详细说明看这里boolean contains(Object o)
: 是否包含该对象boolean containsAll(Collection<?> c)
: 包含c里的全部元素则返回trueboolean add(E e)
: 添加成功改变了集合则返回trueboolean addAll(Collection<? extends E> c)
: 全部添加boolean remove(E e)
: 移除元素boolean removeAll(Collection<?> c)
: 相当于减集合cboolean retainAll(Collection<?> c)
: 相当于求与c的交集void clear()
: 清空集合equals
方法HashSet
不是同步的, 不能保证元素的排列顺序, 注意hashCode
方法的实现LinkedHashSet
根据元素的hashCode
值来决定元素的存储位置,但它同时使用链表维护元素的次序TreeSet
是SortedSet
接口的实现类, 有顺序, 可自定义比较器(Comparator
),有first、last、lower、higher
等方法List
是经常用到的工具, 是有序集合, 增加了与索引位置相关的操作:
E get(int index)
: 获取指定位置的元素E set(int index, E element)
: 替换指定位置的元素void add(int index, E element)
: 将元素添加到指定位置boolean addAll(int index, Collection<? extends E> c)
: 将c里的元素添加到指定位置E remove(int index)
: 移除指定位置的元素int indexOf(Object o)
: o在list中第一次出现的位置int lastIndexOf(Object o)
: o在list中最后一次出现的位置List<E> subList(int fromIndex, int toIndex)
: 子listArrayList
是线程不安全的,而Vector
是线程安全的
Stack
是Vector
的子类,模拟数据结构中的栈,有下面几个操作:
E push(E item)
: 压栈E pop()
: 出栈E peek()
: 查看栈顶元素, 不出栈boolean empty()
: 判断栈空int search(Object o)
: 返回元素位置, 栈顶元素是1, -1表示栈里没有Queue
用于模拟队列这种数据结构,实现先进先出”FIFO”等数据结构,常用如下操作:
boolean add(E e)
: 不建议使用boolean offer(E e)
: 将指定元素插入队尾列,当使用有容量限制的队列时,此方法通常要优于add(E)
,
后者可能无法插入元素,而只是抛出一个异常。推荐使用此方法取代addboolean remove()
: 不建议使用boolean poll()
: 获取头部元素并且删除元素,队列为空返回null;推荐使用此方法取代removeboolean element()
: 返回队首元素, 队空抛NoSuchElementException
boolean peek()
: 返回队首元素, 队空返回null
PriorityQueue
类中元素的顺序不是按照加入的顺序排列的, 而是按队列元素的优先级重新排序,
调用peek()
或者是poll()
方法时,返回的是队列中优先级最小的元素, 可以自定义排序.
Deque
代表一个双端队列,可以当作一个双端队列使用,也可以当作“栈”来使用,因为它包含出栈pop()
与入栈push()
方法
void addFirst(E e)
: 元素增加至队头, 超容量抛异常void addLast(E e)
: 元素增加至队尾, 超容量抛异常boolean offerFirst(E e)
: 元素增加至队头, 比add安全boolean offerLast(E e)
: 元素增加至队尾, 比add安全E removeFirst()
: 获取并删除队头元素, 队空抛NoSuchElementException
E removeLast()
: 获取并删除队尾元素, 队空抛NoSuchElementException
E pollFirst()
: 获取并删除队头元素, 队空返回null
E pollLast()
: 获取并删除队尾元素, 队空返回null
E getFirst()
: 获取队头元素, 但不删除, 队空抛NoSuchElementException
E getLast()
: 获取队头元素, 但不删除, 队空抛NoSuchElementException
E peekFirst()
: 获取队头元素, 但不删除, 队空返回null
E peekLast()
: 获取队头元素, 但不删除, 队空返回null
void push(E e)
: 元素增加至队头, 类似offerFirst
E pop()
: 元素增加至队头, 类似pollFirst
LinkedList
类同时实现了List
接口和Deque
接口, 因此它也可以当做一个双端队列来用, 也可以当作“栈”来使用.
它基于链表实现, 随机访问性能较差, 但插入与删除操作性能很好