写在前面
Java在算法比赛中经常用到一些容器类,类比C++,下面的这些容器及其实现需要我们常记,不管是在算法竞赛中还是在开发中,都有使用需求,需要牢记掌握
一、 List
接口:java.util.List<>
。
实现:
java.util.ArrayList<>
// 变长数组
java.util.LinkedList<>
// 双链表
函数:
add()
// 在末尾添加一个元素
clear()
// 清空
size()
// 返回长度
isEmpty()
// 是否为空
get(i)
// 获取第i个元素
set(i, val)
// 将第i个元素设置为val
二、 栈
类:java.util.Stack<>
只有栈是类其他都是接口。
函数:
push()
// 压入元素
pop()
// 弹出栈顶元素,并返回栈顶元素
peek()
// 返回栈顶元素
size()
// 返回长度
empty()
// 栈是否为空
clear()
// 清空
三、 队列
接口:java.util.Queue<>
实现:
java.util.LinkedList<>
// 双链表
java.util.PriorityQueue<>
// 优先队列
// 默认是小根堆,大根堆写法:new PriorityQueue<>(Collections.reverseOrder())
函数:
add()
// 在队尾添加元素
remove()
// 删除并返回队头
isEmpty()
// 是否为空
size()
// 返回长度
peek()
// 返回队头
clear()
// 清空
四、 Set
接口:java.util.Set<T>
实现:
java.util.HashSet<T>
// 哈希表
java.util.TreeSet<T>
// 平衡树
函数:
add()
// 添加元素
contains()
// 是否包含某个元素
remove()
// 删除元素
size()
// 返回元素数
isEmpty()
// 是否为空
clear()
// 清空
java.util.TreeSet
中多的函数:
ceiling(key)
// 返回大于等于key的最小元素,不存在则返回null
floor(key)
// 返回小于等于key的最大元素,不存在则返回null
五、 Map
接口:java.util.Map<K, V>
实现:
java.util.HashMap<K, V>
// 哈希表
java.util.TreeMap<K, V>
// 平衡树
函数:
put(key, value)
// 添加关键字和其对应的值
get(key)
// 返回关键字对应的值
containsKey(key)
// 是否包含关键字
remove(key)
// 删除关键字
size()
// 返回元素数
isEmpty()
// 是否为空
clear()
// 清空
entrySet()
// 获取Map中的所有对象的集合
Map.Entry<K, V>
// Map中的对象类型
getKey()
// 获取关键字
getValue()
// 获取值
java.util.TreeMap<K, V>
中多的函数:
ceilingEntry(key)
// 返回大于等于key的最小元素,不存在则返回null
floorEntry(key)
// 返回小于等于key的最大元素,不存在则返回null