文章目录
- 前言
- 一、TreeMap
- 二、使用
- 1.构造器
- 1.1 创建
- 2.常用方法(JDK 1.6)
- 1.添加元素
- 2.删除元素
- 3.修改元素
- 4.查找
- 5.遍历
- 6.数量
- 最后
- 相关
前言
TreeMap 是一个有序的key-value集合,它是通过红黑树实现的。
- TreeMap中的元素默认按照keys的自然排序排列。
(例如,对Integer来说,其自然排序就是数字的升序;对String来说,其自然排序就是按照字母表排序) - TreeMap是非线程安全的
一、TreeMap
基于红黑树(Red-Black tree)的 NavigableMap 实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。
public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, Cloneable, Serializable
二、使用
1.构造器
1.1 创建
TreeMap() 使用其键的自然排序构造一个新的空树状图。
创建一个空的 TreeMap。
TreeMap<String, Integer> map = new TreeMap<>();
2.常用方法(JDK 1.6)
1.添加元素
put(K key, V value) 将指定的值与此映射中的指定键相关联。
向map中添加映射关系(键值对)。
TreeMap<String, Integer> map = new TreeMap<>();
// 添加元素
map.put("a", 1);
System.out.println(map); // {a=1}
2.删除元素
remove(Object key) 从此TreeMap中删除此键的映射(如果存在)。
移除指定的key
TreeMap<String, Integer> map = new TreeMap<>();
map.put("a", 1);
// 删除元素
map.remove("a");
System.out.println(map); // {}
3.修改元素
replace(K key, V value) 只有当目标映射到某个值时,才能替换指定键的条目。
修改指定key的值。
TreeMap<String, Integer> map = new TreeMap<>();
map.put("a", 1);
// 修改
map.replace("a",123);
System.out.println(map); // {a=123}
4.查找
containsKey(Object key) 如果此映射包含指定键的映射,则返回 true 。
containsValue(Object value) 如果此地图将一个或多个键映射到指定值,则返回 true 。
firstEntry() 返回与该地图中的最小键相关联的键值映射,如果地图为空,则返回 null 。
firstKey() 返回此地图中当前的第一个(最低)键。
lastEntry() 返回与该地图中最大关键字关联的键值映射,如果地图为空,则返回 null 。
lastKey() 返回当前在此地图中的最后(最高)键。
get(Object key) 返回到指定键所映射的值,或 null如果此映射包含该键的映射。
使用解释请看注释
TreeMap<String, Integer> map = new TreeMap<>();
map.put("a", 1);
map.put("b", 2);
// 包含key
boolean a = map.containsKey("a");
// 包含value
boolean b = map.containsValue(1);
// 第一个映射
Map.Entry<String, Integer> firstEntry = map.firstEntry();
// 第一个键
String firstKey = map.firstKey();
// 最后一个映射
Map.Entry<String, Integer> lastEntry = map.lastEntry();
// 最后一个键
String lastKey = map.lastKey();
// 获取指定键
Integer get = map.get("a");
System.out.println(a); // true
System.out.println(b); // true
System.out.println(firstEntry); // a=1
System.out.println(firstKey); // a
System.out.println(lastEntry); // b=2
System.out.println(lastKey); // b
System.out.println(get); // 1
5.遍历
keySet() 返回此地图中包含的键的Set视图。
values() 返回此地图中包含的值的Collection视图。
entrySet() 返回此地图中包含的映射的Set视图。
看注释
TreeMap<String, Integer> map = new TreeMap<>();
map.put("a", 1);
map.put("b", 2);
// 键集合
Set<String> key = map.keySet();
// 值集合
Collection<Integer> values = map.values();
// 映射集合
Set<Map.Entry<String, Integer>> entries = map.entrySet();
System.out.println(key); // [a, b]
System.out.println(values); // [1, 2]
System.out.println(entries); // [a=1, b=2
6.数量
size() 返回此地图中键值映射的数量。
TreeMap<String, Integer> map = new TreeMap<>();
map.put("a", 1);
map.put("b", 2);
// 数量
int size = map.size();
System.out.println(size); // 2
最后
TreeMap 的使用和 HashMap 使用差不多,不同的是TreeMap是有序的,HashMap是无序的。因为有序所以性能相比稍微低一点。
TreeMap用法总结参考:https://www.jianshu.com/p/e11fe1760a3d