TreeMap
TreeMap API
Modifier and Type | Method and Description |
---|---|
Map.Entry<K,V> | ceilingEntry(K key) 返回大于等于key的最小值的元素,如果没有,则返回null |
K | ceilingKey(K key) 返回大于等于key的最小值的元素的key,如果没有,则返回null |
void | clear() 清除treeMapp中的所有元素。 |
Object | clone() 返回此TreeMap实例的浅拷贝。 |
Comparator<? super K> | comparator() 返回此treeMap的比较器 |
boolean | containsKey(Object key) 如果此treeMap包含指定key,则返回 true 。 |
boolean | containsValue(Object value) 如果此treeMap包含指定value,则返回 true 。 |
NavigableSet | descendingKeySet() 返回此treeMap中包含的键的相反顺序NavigableSet 。 |
NavigableMap<K,V> | descendingMap() 返回此treeMap中的反向排序视图。 |
Set<Map.Entry<K,V>> | entrySet() 返回此treeMap的Set视图。 |
Map.Entry<K,V> | firstEntry() 返回treeMap中的第一个元素,如果treeMap为空,则返回 null 。 |
K | firstKey() 返回treeMap中的第一个元素的key。 |
Map.Entry<K,V> | floorEntry(K key) 返回key小于等于参数key的元素,不存在时返回null。 |
K | floorKey(K key) 返回key小于等于参数key的元素的key,不存在时返回null 。 |
void | forEach(BiConsumer<? super K,? super V> action) 遍历treeMap。 |
V | get(Object key) 返根据key返回value。 |
SortedMap<K,V> | headMap(K toKey) 返回key小于toKey的所有元素。 |
NavigableMap<K,V> | headMap(K toKey, boolean inclusive) 返回key小于toKey的所有元素,inclusive = true时包含等于的元素,inclusive=true时包含等于。 |
Map.Entry<K,V> | higherEntry(K key) 返回最近接近参数key的元素(大于参数key)。 |
K | higherKey(K key) 返返回最近接近参数key的元素的key(大于参数key)。 |
Set | keySet() 遍历此treeMap的key。 |
Map.Entry<K,V> | lastEntry() 返回treeMap中的最后一个元素 |
K | lastKey() 返回treeMap中的最后一个元素的key。 |
Map.Entry<K,V> | lowerEntry(K key) 返回小于指定key的最大的元素 |
K | lowerKey(K key) 返回小于指定key的最大的元素的key。 |
NavigableSet | navigableKeySet() 返回此地图中包含的键的NavigableSet视图。 |
Map.Entry<K,V> | pollFirstEntry() 删除并返回与该treeMap的第一个元素,如果treeMap为空,则返回 null 。 |
Map.Entry<K,V> | pollLastEntry() 删除并返回与该treeMap的最后一个元素,如果treeMap为空,则返回 null 。 |
V | put(K key, V value) 新增一个元素。 |
void | putAll(Map<? extends K,? extends V> map) 将指定treeMap中的所有元素添加到此treeMap中。 |
V | remove(Object key) 从此TreeMap中删除此键的映射(如果存在)。 |
V | replace(K key, V value) 只有当目标映射到某个值时,才能替换指定键的条目。 |
boolean | replace(K key, V oldValue, V newValue) 仅当当前映射到指定的值时,才能替换指定键的条目。 |
void | replaceAll(BiFunction<? super K,? super V,? extends V> function) 将每个条目的值替换为对该条目调用给定函数的结果,直到所有条目都被处理或该函数抛出异常。 |
int | size() 返回此TreeMap中键值映射的数量。 |
NavigableMap<K,V> | subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) 返回此TreeMap部分的视图,其关键范围为 fromKey至 toKey 。 |
SortedMap<K,V> | subMap(K fromKey, K toKey) 返回此TreeMap部分的视图,其关键字范围从 fromKey (含)到 toKey ,独占。 |
SortedMap<K,V> | tailMap(K fromKey) 返回此TreeMap部分的视图,其键大于等于 fromKey 。 |
NavigableMap<K,V> | tailMap(K fromKey, boolean inclusive) 返回此TreeMap部分的视图,其键大于(或等于,如果 inclusive为真) fromKey 。 |
Collection | values() 返回此TreeMap中所有value的Collection视图。 |
Sample Code
import java.util.Map.Entry;
import java.util.NavigableMap;
import java.util.TreeMap;
public class TreeMapDemo {
private static TreeMap<String, String> treeMap = new TreeMap<String, String>();
static {
treeMap.put("1", "one");
treeMap.put("2", "two");
treeMap.put("3", "three");
treeMap.put("4", "four");
treeMap.put("5", "five");
}
public static void main(String[] args) {
values();
}
/**
* @Function: ceilingEntry
* @Description: 返回大于等于key的最小值的元素,如果没有,则返回null.
*
* @param treeMap
* @param key
* @return
*/
public static void ceilingEntry() {
Entry<String, String> result = treeMap.ceilingEntry("3.9");
// 4=four
System.out.println(result);
}
/**
* @Function: ceilingKey
* @Description: 返回大于等于key的最小值的元素的key,如果没有,则返回null
*
* @param treeMap
*/
public static void ceilingKey() {
// 4
System.out.println(treeMap.ceilingKey("3.9"));
}
/**
* @Function: clone
* @Description: 浅克隆参数对象
*
* 浅克隆:会拷贝基本类型的值,若对象内含有引用类型,不会复制一个引用类型,而是复制其句柄.
*
* @param treeMap
*/
public Object clone() {
return treeMap.clone();
}
/**
* @Function: comparator
* @Description: 用于其内元素排序,慎用
*
* @param treeMap
*/
public static void comparator() {
treeMap.comparator();
}
/**
* @Function: compute
* @Description: 根据key和函数表达式设置新的value,并返回新的value.当新的value为null时,删除对应的key
*
*/
public static void compute() {
String newValue = treeMap.compute("1", (key, value) -> "new 1");
// new 1
System.out.println(newValue);
// 为null删除key为5的映射
treeMap.compute("5", (key, value) -> null);
/*
* 1:new 1
* 2:two
* 3:three
* 4:four
*/
treeMap.forEach(
(key,value) -> {
System.out.println(key +":"+ value);
}
);
}
/**
* @Function: computeIfAbsent
* @Description: 根据key和函数表达式设置新的value,并返回新的value.当新的value为null时,不进行任何操作
*
* @param treeMap
*/
public static void computeIfAbsent() {
// key = 1 的映射存在,不操作
String newValue = treeMap.computeIfAbsent("1", key -> "new 1");
// one
System.out.println(newValue);
// value 为 null 不进行操作
treeMap.computeIfAbsent("2", key -> null);
/*
* 1:one
* 2:two
* 3:three
* 4:four
* 5:five
*/
treeMap.forEach(
(key,value) -> {
System.out.println(key +":"+ value);
}
);
}
/**
* @Function: computeIfPresent
* @Description: key存在且相关联的 value不为 null时,函数根据 key对应的value计算出newValue,使用newValue替换旧值.
*
* @param treeMap
*/
public static void computeIfPresent() {
treeMap.computeIfPresent(
"1", (key, value) -> "new" + value
);
// value = null 删除映射
treeMap.computeIfPresent(
"2", (key, value) -> null
);
// key不存在时,不进行操作
treeMap.computeIfPresent(
"6", (key, value) -> "new" + value
);
/*
* 1:newone
* 3:three
* 4:four
* 5:five
*/
treeMap.forEach(
(key,value) -> {
System.out.println(key +":"+ value);
}
);
}
/**
* @Function: descendingKeySet
* @Description: 倒序遍历所有key
*
* @param treeMap
*/
public static void descendingKeySet() {
/*
* 5
* 4
* 3
* 2
* 1
*/
for(String key : treeMap.descendingKeySet()) {
System.out.println(key);
}
}
/**
* @Function: descendingMap
* @Description: 倒序返回TreeMap的所有元素
*
* @param treeMap
*/
@SuppressWarnings("rawtypes")
public static void descendingMap() {
NavigableMap nmap = treeMap.descendingMap();
// Navigable map values: {5=five, 4=four, 3=three, 2=two, 1=one}
System.out.println("Navigable map values: "+nmap);
}
/**
* @Function: entrySet
* @Description: 遍历TreeMap
*
* @param treeMap
*/
public static void entrySet() {
/*
* 1=one
* 2=two
* 3=three
* 4=four
* 5=five
*/
for(Entry<String, String> map : treeMap.entrySet()) {
System.out.println(map);
}
}
/**
* @Function: firstEntry
* @Description: 返回第一个元素
*
* @param treeMap
* @return
*/
public static void firstEntry() {
// 1=one
System.out.println(treeMap.firstEntry());
}
/**
* @Function: firstKey
* @Description: 返回第一个key
*
* @param treeMap
* @return
*/
public static void firstKey() {
// 1
System.out.println(treeMap.firstKey());
}
/**
* @Function: floorEntry
* @Description: 返回key小于等于参数key的元素,不存在时返回null
*
* @param treeMap
* @param key
* @return
*/
public static void floorEntry() {
// 1=one
System.out.println(treeMap.floorEntry("1.9"));
// null
System.out.println(treeMap.floorEntry("0.9"));
}
/**
* @Function: floorKey
* @Description: 返回key小于等于参数key的元素的key,不存在时返回null
*
* @param treeMap
* @param key
*/
public static void floorKey() {
// 1
System.out.println(treeMap.floorKey("1.9"));
// null
System.out.println(treeMap.floorKey("0.9"));
}
/**
* @Function: forEach
* @Description: 遍历treeMap中的所有的元素
*
* @param treeMap
*/
public static void forEach() {
/*
* 1one
* 2two
* 3three
* 4four
* 5five
*/
treeMap.forEach(
(key, value) -> {
System.out.println(key + value);
}
);
}
/**
* @Function: headMap
* @Description: 返回key小于toKey的所有元素,inclusive = true时包含等于的元素
*
* @param treeMap
* @param toKey
* @param inclusive
*/
public static void headMap() {
// {1=one, 2=two, 3=three, 4=four}
System.out.println(treeMap.headMap("5"));
// {1=one, 2=two, 3=three, 4=four, 5=five}
System.out.println(treeMap.headMap("5",true));
}
/**
* @Function: higherEntry
* @Description: 返回最近接近参数key的元素(大于参数key)
*
* @param treeMap
*/
public static void higherEntry() {
// 5=five
System.out.println(treeMap.higherEntry("4.9"));
// 2=two
System.out.println(treeMap.higherEntry("1.3"));
}
/**
* @Function: higherKey
* @Description: 返回最近接近参数key的元素的key(大于参数key)
*
* @param treeMap
*/
public static void higherKey() {
// 5
System.out.println(treeMap.higherKey("4.9"));
// 2
System.out.println(treeMap.higherKey("1.3"));
}
/**
* @Function: keySet
* @Description: 遍历所有key
*
* @param treeMap
*/
public static void keySet() {
/*
* 1
* 2
* 3
* 4
* 5
*/
for(String key : treeMap.keySet()) {
System.out.println(key);
}
}
/**
* @Function: lastEntry
* @Description: 返回最后一个元素
*
* @param treeMap
*/
public static void lastEntry() {
// 5=five
System.out.println(treeMap.lastEntry());
}
/**
* @Function: lastKey
* @Description: 返回最后一个元素的key
*
* @param treeMap
*/
public static void lastKey() {
// 5
System.out.println(treeMap.lastKey());
}
/**
* @Function: lowerEntry
* @Description: 返回小于指定key的最大的元素
*
* @param treeMap
*/
public static void lowerEntry() {
// 3=three
System.out.println(treeMap.lowerEntry("3.9"));
// 3=three
System.out.println(treeMap.lowerEntry("4"));
}
/**
* @Function: lowerKey
* @Description: 返回小于指定key的最大的元素的key
*
* @param treeMap
*/
public static void lowerKey() {
// 3
System.out.println(treeMap.lowerKey("3.9"));
// 3
System.out.println(treeMap.lowerKey("4"));
}
/**
* @param key 需要操作的map的key
* @param value 需要合并的值
* @param remappingFunction 算法 : oldVal 为根据key获取的value , newValue 为 newVal , put(key,oldVal + newVal)
*/
public static void merge() {
// 替换value
treeMap.merge("1", "newVal", (oldVal, newVal) -> oldVal + newVal);
// value为null,删除映射
treeMap.merge("5", "newVal", (oldVal, newVal) -> null);
// key不存在时,新增
treeMap.merge("6", "newVal", (oldVal, newVal) -> oldVal + newVal);
/*
* 1:onenewVal
* 2:two
* 3:three
* 4:four
* 6:newVal
*/
treeMap.forEach(
(key,value) -> {
System.out.println(key +":"+ value);
}
);
}
/**
* @Function: 顺序遍历所有key
* @Description:
*
* @param treeMap
*/
public static void navigableKeySet() {
// [1, 2, 3, 4, 5]
System.out.println(treeMap.navigableKeySet());
}
/**
* @Function: pollFirstEntry
* @Description: 弹出第一个元素
*
* @param treeMap
*/
public static void pollFirstEntry() {
Entry<String, String> entry = treeMap.pollFirstEntry();
// 1=one
System.out.println(entry);
/*
* 2:two
* 3:three
* 4:four
* 5:five
*/
treeMap.forEach(
(key,value) -> {
System.out.println(key +":"+ value);
}
);
}
/**
* @Function: pollLastEntry
* @Description: 弹出最后一个元素
*
* @param treeMap
*/
public static void pollLastEntry() {
Entry<String, String> entry = treeMap.pollLastEntry();
// 5=five
System.out.println(entry);
/*
* 1:one
* 2:two
* 3:three
* 4:four
*/
treeMap.forEach(
(key,value) -> {
System.out.println(key +":"+ value);
}
);
}
/**
* @Function: replaceAll
* @Description: 根据函数对TreeMap中所有元素value进行替换
*
* @param treeMap
*/
public static void replaceAll() {
treeMap.replaceAll(
(key,value) -> {
if(key.equals("1")) {
return "a";
}else {
return "B";
}
});
/*
* 1:a
* 2:B
* 3:B
* 4:B
* 5:B
*/
treeMap.forEach(
(key,value) -> {
System.out.println(key +":"+ value);
}
);
}
/**
*
* @Function: subMap
* @Description: 返回此TreeMap中的部分元素,范围[fromKey至,toKey)
*
* @param treeMap
* @param fromKey
* @param fromInclusive 为true时包含
* @param toKey
* @param toInclusive 为true时包含
*/
public static void subMap() {
// {1=one, 2=two}
System.out.println(treeMap.subMap("1", "3"));
// {1=one, 2=two, 3=three}
System.out.println(treeMap.subMap("1", true, "3", true));
// {2=two}
System.out.println(treeMap.subMap("1", false, "3", false));
}
/**
*
* @Function: tailMap
* @Description: 返回此TreeMap中的部分元素,key大于等于fromKey
*
* @param treeMap
* @param fromKey
* @param inclusive true:返回元素中包含等于fromKey
*/
public static void tailMap() {
// {2=two, 3=three, 4=four, 5=five}
System.out.println(treeMap.tailMap("1.1"));
// {2=two, 3=three, 4=four, 5=five}
System.out.println(treeMap.tailMap("2"));
// {3=three, 4=four, 5=five}
System.out.println(treeMap.tailMap("2",false));
}
/**
* @Function: values
* @Description: 遍历TreeMap中所有元素的value
*
* @param treeMap TreeMap实例
*/
public static void values() {
/*
* one
* two
* three
* four
* five
*/
for(String value : treeMap.values()) {
System.out.println(value);
}
}
}