📅  最后修改于: 2023-12-03 14:42:16.920000             🧑  作者: Mango
Java TreeMap是一种基于红黑树数据结构的Map实现类,它可以实现基于键的自然排序,支持添加、查询、删除等常规操作。除了常规操作以外,Java TreeMap还具有许多特殊方法,本文将介绍其中一些常用的方法。
这两个方法用于在TreeMap中查找小于等于key的最大键(或者大于等于key的最小键)。如果这样的键不存在,则返回null。这两个方法的返回值类型均为K,即键的类型。
例如:
TreeMap<Integer, String> map = new TreeMap<>();
map.put(1, "one");
map.put(3, "three");
map.put(5, "five");
System.out.println(map.floorKey(4)); // 输出3
System.out.println(map.ceilingKey(4)); // 输出5
这两个方法返回TreeMap中键的逆序视图。具体来说,descendingKeySet()
返回一个NavigableSet
类型的对象,它包含所有键的逆序排列,而descendingMap()
方法返回一个新的TreeMap对象,其中所有键值对都被反转。
例如:
TreeMap<Integer, String> map = new TreeMap<>();
map.put(1, "one");
map.put(3, "three");
map.put(5, "five");
NavigableSet<Integer> descendingKeySet = map.descendingKeySet();
for (Integer key : descendingKeySet) {
System.out.print(key + " "); // 输出5 3 1
}
TreeMap<Integer, String> descendingMap = map.descendingMap();
for (Map.Entry<Integer, String> entry : descendingMap.entrySet()) {
System.out.print(entry.getKey() + ":" + entry.getValue() + " "); // 输出5:five 3:three 1:one
}
这两个方法可用于获取TreeMap中的子映射。headMap(K toKey, boolean inclusive)
方法返回一个新的TreeMap对象,包含所有键小于toKey的键值对。如果inclusive参数为true,则包括toKey键的键值对。tailMap(K fromKey, boolean inclusive)
方法返回一个新的TreeMap对象,包含所有键大于等于fromKey的键值对。如果inclusive参数为true,则包括fromKey键的键值对。
例如:
TreeMap<Integer, String> map = new TreeMap<>();
map.put(1, "one");
map.put(3, "three");
map.put(5, "five");
TreeMap<Integer, String> headMap = map.headMap(3, true);
for (Map.Entry<Integer, String> entry : headMap.entrySet()) {
System.out.print(entry.getKey() + ":" + entry.getValue() + " "); // 输出1:one 3:three
}
TreeMap<Integer, String> tailMap = map.tailMap(3, true);
for (Map.Entry<Integer, String> entry : tailMap.entrySet()) {
System.out.print(entry.getKey() + ":" + entry.getValue() + " "); // 输出3:three 5:five
}
这两个方法分别用于删除并返回TreeMap中的第一个和最后一个键值对。如果TreeMap为空,则返回null。这两个方法的返回值类型均为Map.Entry<K, V>,即键值对类型。
例如:
TreeMap<Integer, String> map = new TreeMap<>();
map.put(1, "one");
map.put(3, "three");
map.put(5, "five");
Map.Entry<Integer, String> firstEntry = map.pollFirstEntry();
System.out.println(firstEntry.getKey() + ":" + firstEntry.getValue()); // 输出1:one
Map.Entry<Integer, String> lastEntry = map.pollLastEntry();
System.out.println(lastEntry.getKey() + ":" + lastEntry.getValue()); // 输出5:five
以上就是Java TreeMap的一些特殊方法介绍,除了这些方法以外,还有很多其他的方法可以使用,建议开发者在实际项目中仔细研究和使用。