TreeMap、TreeSet和HashMap、HashSet
目录
一、TreeMap&TreeSet
1.数据结构:
2.时间复杂度:
3.键/元素:
4.TreeMap基本操作: (与 HashMap 类似,但 put, get, remove 等操作会根据键的顺序进行):
5.TreeMap遍历:
6.TreeSet基本操作 (与 HashSet 类似,但 add, remove 等操作会根据元素的自然顺序或比较器顺序进行):
7.TreeSet遍历:
二、HashMap&HashSet
1.数据结构:
2.时间复杂度:
3.键/元素:
4.HashMap基本操作:
5.HashMap遍历:
6.HashSet基本操作:
7.HashSet遍历:
三、总结:
一、TreeMap&TreeSet
1.数据结构:
TreeMap和TreeSet是基于红黑树(平衡二叉查找树)实现
2.时间复杂度:
插入、删除和查找的时间复杂度是O(log n)
3.键/元素:
不允许使用 null 键 (仅 TreeMap) 和 null 元素 (仅 TreeSet),因为无法比较 null 与其他元素的大小。
4.TreeMap基本操作: (与 HashMap 类似,但 put
, get
, remove
等操作会根据键的顺序进行):
put(K key, V value): 插入键值对。
get(Object key): 根据键获取值。
remove(Object key): 根据键删除键值对。
containsKey(Object key): 判断是否包含指定的键。
containsValue(Object value): 判断是否包含指定的值。
size(): 获取键值对的数量。
isEmpty(): 判断是否为空。
clear(): 清空所有键值对
5.TreeMap遍历:
keySet(): 返回所有键的 Set 视图 (有序)。
values(): 返回所有值的 Collection 视图 (有序)。
entrySet(): 返回所有键值对的 Set 视图 (有序)。
firstKey(): 返回当前 Map 中最小键。
lastKey(): 返回当前 Map 中最大键。
例子如下:
import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class HashMapExample {public static void main(String[] args) {// 创建一个 HashMapMap<String, Integer> hashMap = new HashMap<>();// 添加一些键值对hashMap.put("apple", 1);hashMap.put("banana", 2);hashMap.put("cherry", 3);// 使用 entrySet() 遍历 HashMapSet<Map.Entry<String, Integer>> entrySet = hashMap.entrySet();for (Map.Entry<String, Integer> entry : entrySet) {// 获取键和值String key = entry.getKey();Integer value = entry.getValue();// 打印键和值System.out.println("Key: " + key + ", Value: " + value);}}
}
6.TreeSet基本操作 (与 HashSet 类似,但 add
, remove
等操作会根据元素的自然顺序或比较器顺序进行):
add(E e): 添加元素。
remove(Object o): 删除指定元素。
contains(Object o): 判断是否包含指定元素。
size(): 获取元素的数量。
isEmpty(): 判断是否为空。
clear(): 清空所有元素。
7.TreeSet遍历:
iterator(): 返回集合的迭代器 (有序)。
forEach(Consumer<? super E> action): 对每个元素执行给定的操作 (有序)。
二、HashMap&HashSet
1.数据结构:
基于哈希表实现
2.时间复杂度:
插入、删除和查找的平均时间复杂度是 O(1),但在最坏情况下是 O(n) (发生哈希碰撞时)
3.键/元素:
允许使用 null 值和 null 键 (仅 HashMap)。
4.HashMap基本操作:
put(K key, V value): 插入键值对。
get(Object key): 根据键获取值。
remove(Object key): 根据键删除键值对。
containsKey(Object key): 判断是否包含指定的键。
containsValue(Object value): 判断是否包含指定的值。
size(): 获取键值对的数量。
isEmpty(): 判断是否为空。
clear(): 清空所有键值对。
5.HashMap遍历:
keySet(): 返回所有键的 Set 视图。
values(): 返回所有值的 Collection 视图。
entrySet(): 返回所有键值对的 Set 视图。
6.HashSet基本操作:
add(E e): 添加元素。
remove(Object o): 删除指定元素。
contains(Object o): 判断是否包含指定元素。
size(): 获取元素的数量。
isEmpty(): 判断是否为空。
clear(): 清空所有元素。
7.HashSet遍历:
iterator(): 返回集合的迭代器。
forEach(Consumer<? super E> action): 对每个元素执行给定的操作。