大部分copy自菜鸟教程
Deque
不建议使用Stack和Vector。使用Vector做类似的业务,在多线程应该使用java.util.concurrent.CopyOnWriteArrayList等而不是Vector;使用Stack做类似的业务,非线程的你可以选择linkedList、ArrayDeque(实现了Deque接口),多线程情况你可以选择java.util.concurrent.ConcurrentLinkedDeque 或者java.util.concurrent.ConcurrentLinkedQueue。无论是栈还是队列,JDK都是建议使用ArrayDeque而不是LinkedList实现。
Queue方法 | 等效Deque方法 |
---|
add(e) | addLast(e) |
offer(e) | offerLast(e) |
remove() | removeFirst() |
poll() | pollFirst() |
element() | getFirst() |
peek() | peekFirst() |
栈方法 | 等效Deque方法 |
---|
push(e) | addFirst(e) |
pop() | removeFirst() |
peek() | peekFirst() |
1、add()和offer():
add()和offer()都是向队列中添加一个元素。一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,调用 add() 方法就会抛出一个 unchecked 异常,而调用 offer() 方法会返回 false。
2、poll()和remove():
remove() 和 poll() 方法都是从队列中删除第一个元素。如果队列元素为空,调用remove() 的行为与 Collection 接口的版本相似会抛出异常,但是新的 poll() 方法在用空集合调用时只是返回 null。
3、element() 和 peek() :
element() 和 peek() 用于在队列的头部查询元素。与 remove() 方法类似,在队列为空时, element() 抛出一个异常,而 peek() 返回 null。
String类常用方法
方法 | 作用 |
---|
char charAt(int index) | 返回字符串在index位置的字符 |
int length() | 返回字符串的长度 |
char[] toCharArray() | 将字符串转成一个字符数组并返回 |
String trim() | 返回删除前面和后面空白的字符串的副本 |
boolean isEmpty() | 字符串是否为空 |
boolean equals(String s) | 与字符串s比较是否相等(String类中已重载) |
String[] split(String regex) | 根据regex分割字符串,返回分割后的字符串数组 |
String replace(char old, char new) | 用new字符替换字符串中所有old字符 |
StringBuffer类常用方法
方法 | 作用 |
---|
StringBuffer reverse() | 反转字符序列 |
int length() | 返回字符串的长度 |
char charAt(int index) | 返回字符串在index位置的字符 |
StringBuffer append(String s) | 在末尾追加字符串s |
String toString() | 转为字符串 |
StringBuffer insert(int index, String s) | 在索引index处插入s的字符序列 |
StringBuffer replace(int start, int end, String s) | 用s替换start到end的字符序列 |
Arrays工具类常用方法
方法 | 作用 |
---|
int binarySearch(Object[] a, Object key) | 用二分查找算法在给定数组中搜索给定值的对象,返回索引 |
boolean equals(long[] a, long[] a2) | 两数组长度相等,内容相等 |
void fill(int[] a, int val) | 给数组赋值 |
void sort(Object[] a) | 给数组排序 |
String toString() | 转为字符串 |
StringBuilder类常用方法
方法 | 作用 |
---|
StringBuilder append(char c) | 追加字符 |
char charAt(int index) | 返回指定索引处的此序列中的 char 值 |
void setCharAt(int index) | 设置指定索引处的值 |
StringBuilder deleteCharAt(int index) | 删除指定索引处的值 |
StringBuilder reverse() | 反转 |
Collection工具类常用方法
方法 | 作用 |
---|
void reverse(List list) | 反转 |
void sort(List list, Comparator c) | 按Comparator的规则排序 |
void swap(List list, int i , int j) | 交换元素 |
void fill(List list, Object obj) | 用obj替换所有的元素 |
int max(Collection c) | 返回最大的元素 |
int binarySearch(List list, Object key) | 二分查找返回索引 |
int frequency(Collection c, Object obj) | 统计元素出现的次数 |
LinkedList类常用方法
方法 | 作用 |
---|
public boolean add(E e) | 链表末尾添加元素,返回是否成功,成功为 true,失败为 false。 |
public void add(int index, E element) | 向指定位置插入元素。 |
public boolean addAll(Collection c) | 将一个集合的所有元素添加到链表后面,返回是否成功,成功为 true,失败为 false。 |
public boolean addAll(int index, Collection c) | 将一个集合的所有元素添加到链表的指定位置后面,返回是否成功,成功为 true,失败为 false。 |
public void addFirst(E e) | 元素添加到头部。 |
public void addLast(E e) | 元素添加到尾部。 |
public boolean offer(E e) | 向链表末尾添加元素,返回是否成功,成功为 true,失败为 false。 |
public boolean offerFirst(E e) | 头部插入元素,返回是否成功,成功为 true,失败为 false。 |
public boolean offerLast(E e) | 尾部插入元素,返回是否成功,成功为 true,失败为 false。 |
public void clear() | 清空链表。 |
public E removeFirst() | 删除并返回第一个元素。 |
public E removeLast() | 删除并返回最后一个元素。 |
public boolean remove(Object o) | 删除某一元素,返回是否成功,成功为 true,失败为 false。 |
public E remove(int index) | 删除指定位置的元素。 |
public E poll() | 删除并返回第一个元素。 |
public E remove() | 删除并返回第一个元素。 |
public boolean contains(Object o) | 判断是否含有某一元素。 |
public E get(int index) | 返回指定位置的元素。 |
public E getFirst() | 返回第一个元素。 |
public E getLast() | 返回最后一个元素。 |
public int indexOf(Object o) | 查找指定元素从前往后第一次出现的索引。 |
public int lastIndexOf(Object o) | 查找指定元素最后一次出现的索引。 |
public E peek() | 返回第一个元素。 |
public E element() | 返回第一个元素。 |
public E peekFirst() | 返回头部元素。 |
public E peekLast() | 返回尾部元素。 |
public E set(int index, E element) | 设置指定位置的元素。 |
public Object clone() | 克隆该列表。 |
public Iterator descendingIterator() | 返回倒序迭代器。 |
public int size() | 返回链表元素个数。 |
public ListIterator listIterator(int index) | 返回从指定位置开始到末尾的迭代器。 |
public Object[] toArray() | 返回一个由链表元素组成的数组。 |
public T[] toArray(T[] a) | 返回一个由链表元素转换类型而成的数组。 |
HashMap方法
方法 | 作用 |
---|
clear() | 删除 hashMap 中的所有键/值对 |
clone() | 复制一份 hashMap |
isEmpty() | 判断 hashMap 是否为空 |
size() | 计算 hashMap 中键/值对的数量 |
put() | 将键/值对添加到 hashMap 中 |
putAll() | 将所有键/值对添加到 hashMap 中 |
putIfAbsent() | 如果 hashMap 中不存在指定的键,则将指定的键/值对插入到 hashMap 中。 |
remove() | 删除 hashMap 中指定键 key 的映射关系 |
containsKey() | 检查 hashMap 中是否存在指定的 key 对应的映射关系。 |
containsValue() | 检查 hashMap 中是否存在指定的 value 对应的映射关系。 |
replace() | 替换 hashMap 中是指定的 key 对应的 value。 |
replaceAll() | 将 hashMap 中的所有映射关系替换成给定的函数所执行的结果。 |
get() | 获取指定 key 对应对 value |
getOrDefault() | 获取指定 key 对应对 value,如果找不到 key ,则返回设置的默认值 |
forEach() | 对 hashMap 中的每个映射执行指定的操作。 |
entrySet() | 返回 hashMap 中所有映射项的集合集合视图。 |
keySet() | 返回 hashMap 中所有 key 组成的集合视图。 |
values() | 返回 hashMap 中存在的所有 value 值。 |
merge() | 添加键值对到 hashMap 中 |
compute() | 对 hashMap 中指定 key 的值进行重新计算 |
computeIfAbsent() | 对 hashMap 中指定 key 的值进行重新计算,如果不存在这个 key,则添加到 hasMap 中 |
computeIfPresent() | 对 hashMap 中指定 key 的值进行重新计算,前提是该 key 存在于 hashMap 中。 |
PriorityQueue
建队列样例:
// 优先级队列,最⼩堆
PriorityQueue<ListNode> pq = new PriorityQueue<>((a, b)->(a.val - b.val));