① List接口
List继承Collection接口,List是不唯一有序的Collection 线性列表,长度可动态改变。第一位元素的索引是0。
List有get(int index)方法,根据索引来获取值。set(int index,E element)方法,修改索引下的值。
List实例化需要用到子类,List有三个子类:ArrayList,Vector,LinkedList。
② Set接口
Set继承Collection接口,Set是唯一无序的Collection。Set检索效率比较低,插入删除的效率比较高,插入删除不会影响元素的位置。实现使用对add、equals以及hashCode方法有额外标准。
add添加重复的数据,添加失败返回false。添加数据成功返回true。
因对象相等的本质是对象hashCode值判断的,如果两个对象相等,就需要覆盖Object的equals与hashCode方法
③ SortSet接口
SortSet继承Set接口,保存有序集合。
SortSet是按照对象的比较函数决定元素的位置(以Comparator comparator()的自然方式),不是依靠元素的插入顺序排序。
SortSet提供方法
frist():获取第一个位置的元素也是最小的元素;
last():获取最后一个位置的元素也是最大的元素;
headSet(E e):在SortSet中获取比小与e的所有元素集合;
subSet(E form,E to):在SortSet中获取from元素与to元素之间的元素集合(包括from不包括to);
tailSet(E e):在SortSet中获取比e大或等于e的所有元素集合。
④ Queue接口
Queue继承Collection接口,队列是一种特别的线性表,队列仅允许头部移除元素,尾部增加元素。队列是一个先进先出的列表。
队列除了继承Collection 接口的add方法以及renove方法,还额外定义了自己的添加、删除以及查询的方法。
以下是jdk1.5阻塞队列操作
add方法 添加元素 如果队列已满,则抛出IIIegaISlabEepeplian异常;
remove方法 移除元素 如果是空队列,则抛出NoSuchElementException异常;
element方法 返问头部元素 如果是空队列,则抛出NoSuchElementException异常;
offer方法 添加元素 如果添加成功返回true,添加失败返回false;
poll方法 移除并返回头部元素 如果是空队列,则返回null;
peek方法 返回头部元素 如果是空队列,则返回null;
put方法 添加元素 如果队列已满,则阻塞;
take方法 移除并返回头部元素 如果是空队列,则阻塞。
Queue队列尽量避免使用Collection 接口的add方法与remove方法,操作时可能会抛出异常。可使用offer方法与poll方法,根据返回值来判断是否操作成功。
LinkedList 也实现了Queue接口。
Queue<String> queue =new LinkedList<String>();就可以使用Queue方法。
⑤ Deque接口
继承Queue接口,是双端线性集合。两端支持插入元素或者移除元素,实现即可没有容量的限制,也可限制大小。
Deque接口作为先进先出的队列,方法与Queue接口等效。
Deque 方法 等效 Queue 方法
addLast(e) add(e) 添加元素至尾部,插入失败抛出异常
offerLast(e) offer(e) 添加元素至尾部,插入成功则返回 true,否则返回 false
removeFirst() remove() 移除头部元素,如果此双端队列为空,它将抛出一个异常
pollFirst() poll() 移除并返回头部元素,如果此双端队列为空,返回null
getFirst() element() 返回头部元素,如果此双端队列为空,它将抛出一个异常
peekFirst() peek() 返回头部元素,如果此双端队列为空,返回null
Deque接口作为先进后出的堆栈,方法与Stack类等效。
Deque 方法 等效 Stack方法
addFirst(e) push(e) 添加元素至头部,插入失败抛出异常
removeFirst() pop() 获取并移除头部元素,双端队列为空,它将抛出一个异常。
peek() peekFirst() 获取但不移除头部元素
虽然 Deque 不建议插入 null 元素,这是因为其中部分方法会将 null 用作特殊的返回值来指示双端队列为空。
Deque 实现通常不定义基于元素的 equals 和 hashCode 方法,而是从 Object 类继承基于身份的 equals 和 hashCode 方法。
⑥ SortedMap
继承于 Map,使 Key 保持在升序排列。实现Comparable接口,单独写一个比较器。
除实现Map接口的方法以外还需实现的方法
SortedMap subMap(K fromKey, K toKey) 返回此映射的部分视图,其键值的范围从 fromKey(包括)到 toKey(不包括);
SortedMap headMap(K toKey) 返回此映射的部分视图,其键值严格小于toKey;
SortedMap tailMap(K fromKey) 返回此映射的部分视图,其键值严格大于等于fromKey;
K firstKey() 返回最后(最高)的键;
K lastKey() 返回最后(最高)的键;
Set keySet() 返回在此映射中所包含键的Set,该 set 的迭代器将按升序返回这些键;
Collection values() 返回在此映射中所包含值的集合。按键的升序返回这些值;
Set entrySet() 返回在此映射中包含的Entry的Set,该 set 的迭代器将按升序键顺序返回这些条目。