Java 常用容器
Java 常用容器
写在前面
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的最小元素,不存在则返回nullfloor(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的最小元素,不存在则返回nullfloorEntry(key)// 返回小于等于key的最大元素,不存在则返回null