集合总结
总览:
详细:
LinkedList: 链表,有list, queue, deque的接口。unsynchronized
ArrayList: 自适应大小数组,有list接口。unsynchronized
Vector: 手动适应大小数组,有list接口。synchronized。如果不要求thread-safe,请使用ArrayList.
Stack: 基于Vector,推荐使用 Deque<Integer> stack = new ArrayDeque<Integer>()
ArrayBlockingQueue: 基于数组,用int作为count, 添加和取用一个锁。大小固定
LinkedBlockingQueue: 基于链表,用AtomicInteger作为count, 有添加锁和取锁。大小可变,默认大小是int最大值
LinkedBlockingDequeue: 双向的LinkedBlockingQueue.
ConcurrentLinkedQueue: 节点操作线程安全,不同节点可被不同线程修改。没有锁。
PriorityQueue: 最小堆,保持自然顺序。unsynchronized.
PriorityBlockingQueue: blocking的PriorityQueue
HashSet: 集合. unsynchronized
LinkedHashSet: 保持插入顺序的HashSet. unsynchronized.
TreeSet: 保持自然顺序的集合,首位最小. 基于TreeMap(红黑树) . unsynchronized
HashMap: 自适应大小和负载度(load factor)。unsynchronized
LinkedHashMap: 保持插入顺序的HashMap。unsynchronized
ArrayDeque: 自适应大小Deque,作为stack比Stack快,作为Queue比LinkedList快,方法和LinkedList一样。unsynchronized
队列和栈
报异常 | 返回值 | |
插入 | add(e) | offer(e) |
删除 | remove() | poll() |
查看 | element() | peek() |
报异常 | 返回值 | |
插入 | addFirst(e) / addLast(e) | offerFirst(e) / offerLast(e) |
删除 | removeFirst() / removeLast() | pollFirst() / pollLast() |
查看 | getFirst() / getLast() | peekFirst() / peekLast() |
Queue | Deque |
add(e) | addLast(e) |
offer(e) | offerLast(e) |
remove() | removeFirst() |
poll() | pollFirst() |
element() | getFirst() |
peek() | peekFirst() |
Stack | Deque |
push(e) | addFirst(e) |
pop() | removeFirst() |
peek() | peekFirst() |
报异常 | 返回值 | 阻塞 | 超时 | |
插入 | add(e) | offer(e) | put(e) | offer(e,time,unit) |
删除 | remove() | poll() | take() | poll(time, unit) |
查看 | element() | peek() |
具体集合方法
add(index, item) | 在指定位置插入元素 |
addFirst(e) / addLast(e) | 插入列表首 / 尾 |
offerFirst(e) / offerLast(e) | 插入列表首/ 尾 |
addAll([index], collection) | (在指定位置)插入集合 |
get(index) | 随机访问 |
getFirst() / getLast() | 访问列表首 / 尾 |
peekFirst() / peekLast() | 访问列表首 / 尾 |
indexOf(e) | 获取元素首现位置 |
lastIndexOf(e) | 获取元素尾现位置 |
pollFirst() / pollLast() | 弹出列表首/尾 |
remove() | 弹出列表首 |
remove(e) | 删除指定元素 |
remove(index) | 删除指定位置元素 |
removeFirst() / removeLast() | 弹出列表首 / 尾 |
removeFirstOccurrence(e) | 删除元素首次出现 |
removeLastOccurrence(e) | 删除元素尾次出现 |
set(index, e) | 更改指定元素 |
contains(e) | 元素是否存在 |
pop() / push(e) | stack 弹出 / 压栈 |
clear() | 清空 |
toArray() | 生成数组 |
listIterator(index) | list指定位置始迭代器 |
descendingIterator() | deque反向迭代器 |
add(index, item) | 在指定位置插入元素 |
addAll([index], collection) | (在指定位置)插入集合 |
get(index) | 随机访问 |
indexOf(e) | 获取元素首现位置 |
lastIndexOf(e) | 获取元素尾现位置 |
remove(e) | 删除元素首次出现 |
remove(index) | 删除指定位置元素 |
removeAll(collection) | 删除集合元素 |
removeRange(start, end) | 删除start到end-1的元素 |
set(index, e) | 更改指定元素 |
contains(e) | 元素是否存在 |
isEmpty() | 是否为空 |
retainAll(collection) | 是否含有集合 |
subList(start, end) | 生成子list,start到end-1 |
ensureCapacity(min) | 增加容量,至少容纳min个 |
trimToSize() | 缩减容量到当前大小 |
clear() | 清空 |
toArray() | 生成数组 |
iterator() | 迭代器 |
listIterator([index]) | (list指定位置)迭代器 |
empty() | 判断是否为空 |
peek() | 查看栈顶元素 |
pop() | 出栈 |
push() | 入栈 |
search(Object) | 查询,栈顶是1 |
offer(e,[time, unit]) | 入队,可等待一段时间 |
put(e) | 入队,等待 |
poll([time,unit]) | 出队,可等待一段时间 |
take() | 出队,等待 |
contains(e) | 是否存在元素 |
drainTo(collection, [num]) | 将(num个)元素转移到另个集合 |
remainingCapacity() | 剩余容量 |
clear() | 清空atomically |
toArray | 生成数组 |
add(e) | 添加元素 |
contains(e) | 是否存在元素 |
isEmpty() | 是否为空 |
clear() | 清空 |
remove(e) | 删除 |
put(key, value) | 添加键值对 |
get(key) | 获取key对应的value |
containsKey(key) | 是否存在key |
containsValue(value) | 是否存在value |
isEmpty() | 是否为空 |
remove(key) | 删除键值对 |
entrySet() | 键值对集合 |
keySet() | key集合 |
values() | value集合 |
clear() | 清空 |
数组
asList() | 由数组生成list |
binarySearch(T[], [from, to], key,[comparator]) | 二分查找 |
copyOfRange(dest[], from, to) | 复制到新数组 |
equals(arrayA, arrayB) | 比较元素一致 |
fill(array[], [from, to], value) | 填充值 |
sort(T[], [from, to], [ comparator]) | 排序 |
toString(array[]) | 内容 |