📅  最后修改于: 2023-12-03 15:30:04.997000             🧑  作者: Mango
ConcurrentNavigableMap接口
ConcurrentNavigableMap接口是Java中并发导航映射的接口。它继承自ConcurrentMap和NavigableMap接口,可以在高负载并发环境中安全地操作。
定义
public interface ConcurrentNavigableMap<K,V> extends ConcurrentMap<K,V>, NavigableMap<K,V>
方法
ConcurrentNavigableMap接口提供了大多数Map和NavigableMap中的方法,以及一些专有方法。以下是常用方法。
添加/删除
- put(K key, V value):将key-value映射添加到map中
- remove(Object key):将指定键的映射从map中删除
- putIfAbsent(K key, V value):仅当map中不包含该键的映射时,才将指定的key-value映射添加到map中
- replace(K key, V oldValue, V newValue):仅当map中已经存在键key所映射的值为oldValue时,才将key的值设置为newValue
- replace(K key, V value):将键key所映射的值更新为value
- clear():删除map中的所有键值对
查询/获取
- size():返回map中key-value映射的数量
- isEmpty():如果map不包含键值映射,则返回true
- containsKey(Object key):如果map包含指定键的映射,则返回true
- containsValue(Object value):如果map中包含一个或多个键的映射到指定值,则返回true
- get(Object key):返回key所映射的值,如果map中没有该键的映射,则返回null
- firstKey():返回map中最小的键
- lastKey():返回map中最大的键
- ceilingKey(K key):返回最小的键大于等于给定键的键,如果不存在则返回null
- floorKey(K key):返回最大的键小于等于给定键的键,如果不存在则返回null
- higherKey(K key):返回严格大于给定键的最小键,如果不存在则返回null
- lowerKey(K key):返回严格小于给定键的最大键,如果不存在则返回null
- descendingMap():返回与map相反顺序的map
- descendingKeySet():返回map中键的逆序视图
- subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive):返回从fromKey到toKey之间所有键值映射的视图,fromInclusive指定是否包含fromKey,toInclusive指定是否包含toKey
- headMap(K toKey, boolean inclusive):返回所有小于toKey的键值映射的视图,inclusive指定是否包含toKey
- tailMap(K fromKey, boolean inclusive):返回所有大于等于fromKey的键值映射的视图,inclusive指定是否包含fromKey
例子
ConcurrentNavigableMap<String, Integer> map = new ConcurrentSkipListMap<>(); // 创建ConcurrentNavigableMap实例
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);
System.out.println(map.get("A")); // 输出 1
System.out.println(map.ceilingKey("D")); // 输出 null
System.out.println(map.descendingMap()); // 输出 {C=3, B=2, A=1}
总结
ConcurrentNavigableMap是一个非常有用的接口,可以在多线程环境下安全地操作映射。这可以避免在并发操作时出现数据竞争等问题,提升了程序的整体性能和稳定性。需要注意的是,ConcurrentNavigableMap是有序映射,因此可以按照特定的顺序访问键值对。