Java基础-集合框架-Map-TreeMap API及常用方法

TreeMap

TreeMap API

Modifier and TypeMethod and Description
Map.Entry<K,V>ceilingEntry(K key)
返回大于等于key的最小值的元素,如果没有,则返回null
KceilingKey(K key)
返回大于等于key的最小值的元素的key,如果没有,则返回null
voidclear()
清除treeMapp中的所有元素。
Objectclone()
返回此TreeMap实例的浅拷贝。
Comparator<? super K>comparator()
返回此treeMap的比较器
booleancontainsKey(Object key)
如果此treeMap包含指定key,则返回 true 。
booleancontainsValue(Object value)
如果此treeMap包含指定value,则返回 true 。
NavigableSetdescendingKeySet()
返回此treeMap中包含的键的相反顺序NavigableSet 。
NavigableMap<K,V>descendingMap()
返回此treeMap中的反向排序视图。
Set<Map.Entry<K,V>>entrySet()
返回此treeMap的Set视图。
Map.Entry<K,V>firstEntry()
返回treeMap中的第一个元素,如果treeMap为空,则返回 null 。
KfirstKey()
返回treeMap中的第一个元素的key。
Map.Entry<K,V>floorEntry(K key)
返回key小于等于参数key的元素,不存在时返回null。
KfloorKey(K key)
返回key小于等于参数key的元素的key,不存在时返回null 。
voidforEach(BiConsumer<? super K,? super V> action)
遍历treeMap。
Vget(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)。
KhigherKey(K key)
返返回最近接近参数key的元素的key(大于参数key)。
SetkeySet()
遍历此treeMap的key。
Map.Entry<K,V>lastEntry()
返回treeMap中的最后一个元素
KlastKey()
返回treeMap中的最后一个元素的key。
Map.Entry<K,V>lowerEntry(K key)
返回小于指定key的最大的元素
KlowerKey(K key)
返回小于指定key的最大的元素的key。
NavigableSetnavigableKeySet()
返回此地图中包含的键的NavigableSet视图。
Map.Entry<K,V>pollFirstEntry()
删除并返回与该treeMap的第一个元素,如果treeMap为空,则返回 null 。
Map.Entry<K,V>pollLastEntry()
删除并返回与该treeMap的最后一个元素,如果treeMap为空,则返回 null 。
Vput(K key, V value)
新增一个元素。
voidputAll(Map<? extends K,? extends V> map)
将指定treeMap中的所有元素添加到此treeMap中。
Vremove(Object key)
从此TreeMap中删除此键的映射(如果存在)。
Vreplace(K key, V value)
只有当目标映射到某个值时,才能替换指定键的条目。
booleanreplace(K key, V oldValue, V newValue)
仅当当前映射到指定的值时,才能替换指定键的条目。
voidreplaceAll(BiFunction<? super K,? super V,? extends V> function)
将每个条目的值替换为对该条目调用给定函数的结果,直到所有条目都被处理或该函数抛出异常。
intsize()
返回此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 。
Collectionvalues()
返回此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);
		}
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值