📜  ConcurrentNavigableMap接口(1)

📅  最后修改于: 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是有序映射,因此可以按照特定的顺序访问键值对。