
| 方法概述 | ||
| boolean | add(E e) 把元素e加入Collection对象中,如果改变Collection对象则返回true,否则返回false。 | |
| boolean | addAll(Collection<? extends E> c) 把c中所有元素加入当前Collection中。 | |
| void | clear() 清除Collection中的所有元素。 | |
| boolean | ||
| boolean | ||
| boolean | equals(Object o) 当前Collection与对象o是否相等,所谓相等应遵从Object类中equals方法的要求,详见Object.equals方法说明。 | |
| int | hashCode() 返回当前Collection中的哈希码。 | |
| boolean | isEmpty() 返回当前Collection对象是否为空,如是空则为true,否则为false。 | |
| Iterator<E> | iterator() 返回当前Collection元素的迭代器。 | |
| boolean | remove(Object o) 删除当前Collection中对象为o的元素,如果有多个只删除一个。如果删除成功则返回true,否则为false。 | |
| boolean | removeAll(Collection<?> c) 删除当前Collection中在c出现的所有元素。如果当前Collection改变就返回true,否则返回false。 | |
| boolean | retainAll(Collection<?> c) 只保留当前Collection中在c所出现的元素。如果Collection改变则返回true,否则false。 | |
| int | size() 返回Collection中元素的个数。 | |
| Object[] | toArray() 返回包含Collection所有元素的数组。 | |
| toArray(T[] a) 返回包含Collection所有元素的数组,数组元素类型由运行时类型T指定。 | |
| 方法概述 | |
| void | add(int index, E element) 在列表的指定下标增加元素。 |
| boolean | 在列表指定下标增加c中所有元素到列表中。 |
| E | get(int index) 访问列表中指定下标的元素。 |
| int | indexOf(Object o) 返回对象o在列表中第一次出现的下标,如列表不包含元素o则返回-1。 |
| int | lastIndexOf(Object o) 返回元素o在列表中最后一次出现的下标,如列表不包含则返回-1。 |
| ListIterator<E> | listIterator() 返回列表元素的列表迭代器。 |
| ListIterator<E> | listIterator(int index) 返回列表元素的列表迭代器,该迭代器从指定下标元素开始。 |
| E | remove(int index) 删除列表中指定下标的元素。 |
| set(int index, E element) 设置列表中指定下标元素的值。 | |
| List<E> | subList(int fromIndex, int toIndex) 返回子列表[fromIndex, toIndex)。 |
| 方法概述 | |
| element() 检过队头元素,但不删除。如果队列为空则抛出 NoSuchElementException异常。 | |
| boolean | offer(E e) 进队操作。 |
| E | peek() 检索队头元素,但不删除。如果队列为空则返回null。 |
| E | poll() 删除并返回队头元素,如果队列为空则返回null。 |
| E | remove() 删除并返回队头元素,如果队列为空抛出 NoSuchElementException异常。 |
NoSuchElementException异常。用户可根据自己的需进行选取。| 方法概述 | |
| void | addFirst(E e) 在前端插入元素。 |
| void | addLast(E e) 在尾端插入元素。 |
| Iterator<E> | descendingIterator() 返回双端队列中元素的逆序迭代器。 |
| getFirst() 查看前端元素,但不删除。 | |
| E | getLast() 查看尾端元素,但不删除。 |
| Iterator<E> | iterator() 返回双端队列元素的迭代器。 |
| boolean | offerFirst(E e) 在前端插入元素。 |
| boolean | offerLast(E e) 在尾端插入元素。 |
| E | peekFirst() 查看前端元素。 |
| E | peekLast() 查看尾端元素。 |
| E | pollFirst() 查看并删除前端元素。 |
| E | pollLast() 查看并删除尾端元素。 |
| void | push(E e) 在前端插入元素,此时双端队列可看作栈进行操作。 |
| E | pop() 在前端删除元素,此时又端除列可看栈进行操作。 |
| E | removeFirst() 查看并删除前端元素。 |
| E | removeLast() 查看并删除尾端元素。 |
NoSuchElementException异常。此外,双端队列还提供栈的接口,push和pop这两个方法是专为栈而设置的。最后双端队列仍然是一个队列。Map| 方法概述 | |
| boolean | containsKey(Object key) 返回映射是否包含键key,如是返回true,否则false。 |
| boolean | containsValue(Object value) 返回映射是否有键映射到值value中,如有则返回true,否则false。 |
| entrySet() 返回映射中的所有<key-value>对的集合。 | |
| V | get(Object key) 返回映射中键key所对应的值,如不存在key则返回null。 |
| boolean | isEmpty() 如果映射不<key-value>对,则返回true,否则为false。 |
| Set<K> | keySet() 返回映射中所有键的集合。 |
| V | put(K key, V value) 指定键key所关联的值value。 |
| void | |
| remove(Object key) 删除键key所对应的<key-value>对。 | |
| Collection<V> | values() 返回映射中所有值的Collection形式。 |
| | Implementations | |||||
| Hash Table | Resizable Array | Balanced Tree | Linked List | Hash Table + Linked List | ||
| Interfaces | Set | HashSet | | TreeSet | | LinkedHashSet |
| List | | ArrayList | | LinkedList | | |
| Deque | | ArrayDeque | | LinkedList | | |
| Map | HashMap | | TreeMap | | LinkedHashMap | |
List l = Collections.synchronizedList(new LinkedList(…));
Set s = Collections.synchronizedSet(new LinkedHashSet(...));
Map m = Collections.synchronizedMap(new LinkedHashMap(...));
copy(复制)、fill(填充)、max(最大值)、min(最小值)和reverse(逆序)等算法,更多的算法请参考Java API的说明文档。 Java集合框架的基础类(Infrastructure) Java库类的开发人员把迭代器,顺序称为集合框中的基础设施,我们这里把它称作基础类。 使用迭代器,可以有效地遍历集合的所有元素而不需了解它的物理结构,提供了一种透明的访问机制。Iterator是一种单向的迭代器,沿着next进行该问所有元素,只能删除元素,而不能改更元素对象;ListIterator是一种双向的迭代器,可以向前和向后访问,同时能够删除元素,也能更元素。迭代器是整个集合框中所有集合的粘合剂,无须了解集合的物理结构就可以遍历集合的所有元素。除了List接口提了了按下标访问集合元素外,其它集合都没有提供。因此,要遍历这些集合中的元素,只能通常迭代器遍历或转换成数组再进行随机访问。故迭代器在集合框架中功不可没。 部分集合(如TreeSet和TreeMap)要求元素是有序的,即可能相互比较的。Java集合框架中使用Comparable和Comparator这两个接口来实现元素的相互比较。一个类implements Comparable接口,那么它的对象是自然有序的,可排序的。如果某个类没有implements Comparable接口,那么可以使用另外一个类implements Comparator接口,来制定该类中对象的排序依据,使它在外界对象(比较器)的作用,也是可以有序的。值得一提的是,Comparable和Comparator这两个接口之中并没有重复的部分,也就是不能说一个类implements了Comparator,就不需要提供它的Comparator,这不是绝对的。String类implemetns了Comparable接口,如果想改变它的比较方法的话,那就显得无能为力了;但是我们可能以通过提供另一个比较器