方法概述
|
||
boolean
|
add
(
E
e)
把元素e加入Collection对象中,如果改变Collection对象则返回true,否则返回false。
|
|
boolean
|
addAll
(
Collection
<? extends
E
> c)
把c中所有元素加入当前Collection中。
|
|
void
|
clear
()
清除Collection中的所有元素。
|
|
boolean
|
contains
(Object o) 当前Collection是否包含对象o,如是则返回true,否则为false。 |
|
boolean
|
containsAll
(
Collection
<?> c) 当前Collection是否包含c中的所有元素,如是则返回true,否则为false。 |
|
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
|
addAll
(int index,
Collection
<? extends E> c)
在列表指定下标增加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)
删除列表中指定下标的元素。
|
E
|
set
(int index,
E
element)
设置列表中指定下标元素的值。
|
List
<E>
|
subList
(int fromIndex, int toIndex) 返回子列表[fromIndex, toIndex)。 |
方法概述
|
|
E
|
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
()
返回双端队列中元素的逆序迭代器。
|
E
|
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。
|
Set
<Map.Entry<K,V>>
|
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
|
putAll
(
Map
<? extends
K
,? extends
V
> m) 把m中所有<key-value>对加入当前映射中。 |
V
|
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类
库的开发人员把迭代器,顺序(ordering)称为集合框架中的基础设施,我们这里把它称作基础类。
使用迭代器,可以有效地遍历集合的所有元素而不需了解它的物理结构,提供了一种透明的访问机制。Iterator是一种单向的迭代器,沿着next进行访问所有元素,只能删除元素,而不能改更元素;ListIterator是一种双向的迭代器,可以向前和向后访问元素,同时能够删除元素,也能更改元素。迭代器是整个集合框架中所有集合的粘合剂,无须了解集合的物理结构就可以遍历集合的所有元素。除了List接口提了了按下标访问集合元素外,其它集合都没有提供。因此,要遍历这些集合中的元素,只能使用迭代器遍历或转换成数组再进行随机访问。故迭代器在集合框架中功不可没。
部分集合(如TreeSet和TreeMap)要求元素是有序的,即可能相互比较的。Java集合框架中使用
Comparable
和
Comparator
这两个接口来实现元素的相互比较。一个类
implements Comparable
接口,那么它的对象是自然有序的,可排序的。如果某个类没有
implements Comparable
接口,那么可以使用另外一个类
implements Comparator
接口,来制定该类中对象的排序依据,使它在外界对象(比较器)的作用,也是可以有序的。值得一提的是,
Comparable
和
Comparator
这两个接口之中并没有重复的部分,也就是不能说一个类
implements
了
Comparator
,就不需要提供它的
Comparator
,这不是绝对的。
String
类
implemetns
了
Comparable
接口,如果想改变它的比较方法的话,那就显得无能为力了;但是我们可能以通过提供另一个比较器
(Comparator)
来重写它的比较方法,以满足我们新的需求。