前言
TreeMap用于存储与
HashMap
类非常相似的键值对。区别在于TreeMap提供了一种以排序顺序存储键/值对的有效方法。它是基于红黑树的NavigableMap
实现。
public class TreeMap<K,V>
extends AbstractMap<K,V>
implements NavigableMap<K,V>, Cloneable, java.io.Serializable
一、常用methods
-
void clear(): 它从地图中删除所有键值对。
-
int size(): 返回此映射中存在的键值对的数量。
-
boolean containsKey(Object key) : 如果此映射包含指定键的映射,则返回
true
。 -
boolean containsValue(Object value) : 如果此地图将一个或多个键映射到指定值,则返回
true
。 -
Set<Map.Entry<K,V>> entrySet( ): 返回此地图中包含的映射的
Set
视图。常用于遍历。 -
V get(Object key): 返回到指定键所映射的值,若没有则返回
null
。 -
Set KeySet() : 返回此地图中包含的键的
Set
视图。 常用于遍历map中的Key。 -
V put(K key, V value) : 将指定的值与此映射中的指定键相关联。即将键值对加入map中。
-
V remove(Object key): 删除指定键的键值对。
-
V replace(K key,V value): 替换指定键的值。
-
V replace(K key,V oldValue,V newValue): 替换指定键值对的值。若不存在指定的键值对,则不操作。
二、特有的methods
- Map.Entry <K,V> ceilingEntry(K key) : 返回最小的大于或等于指定的Key的元素,若没有,则返回null
TreeMap treeMap = new TreeMap();
treeMap.put("1", "demo1");
treeMap.put("2", "demo2");
treeMap.put("3", "demo3");
Entry entry = treeMap.ceilingEntry("2.5");
System.out.println(entry+"====="+entry.getKey()+"->"+entry.getValue());
entry = treeMap.ceilingEntry("4");
System.out.println(entry);
![](https://img.haomeiwen.com/i24492102/693bd03a255549cf.png)
- K ceilingKey(K key) : 返回最小的大于或等于指定Key的Key,如果没有,则返回null
TreeMap treeMap = new TreeMap();
treeMap.put("1", "demo1");
treeMap.put("2", "demo2");
treeMap.put("3", "demo3");
Object obj = treeMap.ceilingKey("2.5");
System.out.println(obj);
obj = treeMap.ceilingEntry("4");
System.out.println(obj);
![](https://img.haomeiwen.com/i24492102/3e615e540b7d6ce3.png)
- NavigableSetdescendingKeySet() : 返回集合的全部Key,并且是逆序的
TreeMap treeMap = new TreeMap();
treeMap.put("1", "demo1");
treeMap.put("2", "demo2");
treeMap.put("3", "demo3");
Set set = treeMap.descendingKeySet();
System.out.println(set);
![](https://img.haomeiwen.com/i24492102/19da962f3f4b6cf6.png)
- NavigableMap<K,V> descendingMap() : 返回集合,并且是逆序的
TreeMap treeMap = new TreeMap();
treeMap.put("1", "demo1");
treeMap.put("2", "demo2");
treeMap.put("3", "demo3");
System.out.println(treeMap);
Map map = treeMap.descendingMap();
System.out.println(map);
![](https://img.haomeiwen.com/i24492102/43bf33f085e65a3b.png)
- Map.Entry<K,V> firstEntry() : 返回集合中含有最小的Key的元素
TreeMap treeMap = new TreeMap();
treeMap.put("1", "demo1");
treeMap.put("2", "demo2");
treeMap.put("3", "demo3");
Entry entry = treeMap.firstEntry();
System.out.println(entry);
![](https://img.haomeiwen.com/i24492102/241477c45bc2019f.png)
- K firstKey() : 返回集合中最小的Key
TreeMap treeMap = new TreeMap();
treeMap.put("1", "demo1");
treeMap.put("2", "demo2");
treeMap.put("3", "demo3");
Object obj = treeMap.firstKey();
System.out.println(obj);
![](https://img.haomeiwen.com/i24492102/241175faa98f6288.png)
- Map.Entry<K,V> floorEntry(K key) : 与ceilingEntry()方法相反,返回最大的小于等于指定Key的元素
TreeMap treeMap = new TreeMap();
treeMap.put("1", "demo1");
treeMap.put("2", "demo2");
treeMap.put("3", "demo3");
Entry entry = treeMap.floorEntry("2.5");
System.out.println(entry);
![](https://img.haomeiwen.com/i24492102/c357a46f27c29e82.png)
- K floorKey(K key) : 返回最大的小于等于指定Key的Key
TreeMap treeMap = new TreeMap();
treeMap.put("1", "demo1");
treeMap.put("2", "demo2");
treeMap.put("3", "demo3");
Object obj = treeMap.floorKey("2.5");
System.out.println(obj);
![](https://img.haomeiwen.com/i24492102/90ab299ae652f7a9.png)
- SortedMap<K,V> headMap(K Key) : 返回小于指定Key的所有元素
TreeMap treeMap = new TreeMap();
treeMap.put("1", "demo1");
treeMap.put("2", "demo2");
treeMap.put("3", "demo3");
Map map = treeMap.headMap("2.5");
System.out.println(map);
![](https://img.haomeiwen.com/i24492102/dd65a3d6363423b7.png)
- NavigableMap<K,V> headMap(K Key,boolean inclusive) : 当inclusive为true时,返回Key小于等于指定Key的所有元素
TreeMap treeMap = new TreeMap();
treeMap.put("1", "demo1");
treeMap.put("2", "demo2");
treeMap.put("3", "demo3");
Map map = treeMap.headMap("2",true);
System.out.println(map);
map = treeMap.headMap("2",false);
System.out.println(map);
![](https://img.haomeiwen.com/i24492102/f7fbef7531e28fa0.png)
- Map.Entry<K,V> higherEntry(K key) : 返回大于指定Key的所有元素
TreeMap treeMap = new TreeMap();
treeMap.put("1", "demo1");
treeMap.put("2", "demo2");
treeMap.put("3", "demo3");
Entry entry = treeMap.higherEntry("2.5");
System.out.println(entry);
![](https://img.haomeiwen.com/i24492102/9d88e21ab3dd24aa.png)
- K higherKey(K Key) : 返回大于指定Key的所有Key
TreeMap treeMap = new TreeMap();
treeMap.put("1", "demo1");
treeMap.put("2", "demo2");
treeMap.put("3", "demo3");
Object obj = treeMap.higherKey("2.5");
System.out.println(obj);
![](https://img.haomeiwen.com/i24492102/e5939926a3940bd8.png)
- Map.Entry<K,V> lastEntry() : 返回Key最大的元素
TreeMap treeMap = new TreeMap();
treeMap.put("1", "demo1");
treeMap.put("2", "demo2");
treeMap.put("3", "demo3");
Entry entry = treeMap.lastEntry();
System.out.println(entry);
![](https://img.haomeiwen.com/i24492102/92740b205d185628.png)
- K lastKey() : 返回最大的Key
TreeMap treeMap = new TreeMap();
treeMap.put("1", "demo1");
treeMap.put("2", "demo2");
treeMap.put("3", "demo3");
Object obj = treeMap.lastKey();
System.out.println(obj);
![](https://img.haomeiwen.com/i24492102/dad6c2bc398717ec.png)
- Map.Entry<K,V> lowerEntry(K Key) : 返回小于指定key的最大元素
TreeMap treeMap = new TreeMap();
treeMap.put("1", "demo1");
treeMap.put("2", "demo2");
treeMap.put("3", "demo3");
Entry entry = treeMap.lowerEntry("2.5");
System.out.println(entry);
![](https://img.haomeiwen.com/i24492102/bc02b0fc7fc6c6a4.png)
-
K lowerKey(K Key) : 返回小于指定Key的最大的Key
-
Map.Entry<K,V> pollFirstEntry() : 删除Key最小的元素
TreeMap treeMap = new TreeMap();
treeMap.put("1", "demo1");
treeMap.put("2", "demo2");
treeMap.put("3", "demo3");
treeMap.pollFirstEntry();
System.out.println(treeMap);
![](https://img.haomeiwen.com/i24492102/2b3e9822d641b171.png)
-
Map.Entry<K,V> pollLastEntry() : 删除Key最大的元素
-
NavigableMap<K,V> subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) : 截取集合中Key从fromKey到toKey的元素,是否截取他们本身,取决于true或者false
TreeMap treeMap = new TreeMap();
treeMap.put("1", "demo1");
treeMap.put("2", "demo2");
treeMap.put("3", "demo3");
treeMap.put("4", "demo4");
Map map = treeMap.subMap("1",true, "4", true);
System.out.println(map);
map = treeMap.subMap("1",false, "4", true);
System.out.println(map);
map = treeMap.subMap("1",false, "4", false);
System.out.println(map);
![](https://img.haomeiwen.com/i24492102/238a6c4487763427.png)
-
SortedMap<K,V> subMap(K fromKey, K toKey) : 截取集合中Key从fromKey到toKey的元素,包括fromKey,不包括toKey
-
SortedMap<K,V> tailMap(K fromKey) : 截取Key大于等于fromKey的所有元素
-
NavigableMap<K,V> tailMap(K fromKey, boolean fromInclusive) : 当inclusive为true时,截取Key大于等于fromKey的所有元素,否则截取Key大于fromKey的所有元素
结尾
本文到这里就结束了,感谢看到最后的朋友,都看到最后了,点个赞再走啊,如有不对之处还请多多指正。
网友评论