本文翻译自http://tutorials.jenkov.com/java-util-concurrent/concurrentnavigablemap.html,人工翻译,仅供学习交流。
ConcurrentNavigableMap
ConcurrentNavigableMap类是为了支持NavigableMap并发访问的而设计的子接口,使其子类可以实现并发访问。可以通过不同的方法,如 headMap(), subMap() 和tailMap(),返回这些子类。
比起重新解释NavigableMap中的所有方法,我只会关注在ConcurrentNavigableMap增加的方法(译者注:jdk1.8中ConcurrentNavigableMap所有的方法均重写NavigableMap)。
headMap()
headMap(T toKey)方法会返回一个key值小于给定的值的一个map集合。
如果改变初始集合,这个改动也会映射到headMap中。
下面是使用headMap()方法的的示例:
ConcurrentNavigableMap map = new ConcurrentSkipListMap();
map.put("1", "one");
map.put("2", "two");
map.put("3", "three");
ConcurrentNavigableMap headMap = map.headMap("2");
headMap将指向一个ConcurrentNavigableMap,它只包含键"1",因为只有这个键严格小于“2”。
有关该方法如何工作的更多具体细节,以及重载版本是如何工作的,请参阅JavaDoc。
tailMap()
tailMap(T fromKey) 方法返回一个key值大于和等于给定的值的一个map集合。
如果改变初始集合,这个改动也会映射到tailMap中。
下面是使用tailMap()方法的的示例:
ConcurrentNavigableMap map = new ConcurrentSkipListMap();
map.put("1", "one");
map.put("2", "two");
map.put("3", "three");
ConcurrentNavigableMap tailMap = map.tailMap("2");
tailMap包含key值“2”和“3”,因为这两个键大于或等于“2”。
有关该方法如何工作的更多具体细节,以及重载版本是如何工作的,请参阅JavaDoc。
subMap()
subMap(K fromKey, K toKey)方法返回一个参数中从fromKey(包含)到tokey(不包含)的部分集合。下面有个示例:
ConcurrentNavigableMap map = new ConcurrentSkipListMap();
map.put("1", "one");
map.put("2", "two");
map.put("3", "three");
ConcurrentNavigableMap subMap = map.subMap("2", "3");
返回的子map只包含键“2”,因为只有这个键大于或等于“2”。
更多方法
ConcurrentNavigableMap接口还包含一些可能有用的方法。例如:
- descendingKeySet()
- descendingMap()
- navigableKeySet()
有关这些方法的更多信息,请参阅官方JavaDoc。
本文详细介绍了Java中的ConcurrentNavigableMap接口,重点讲解了其并发访问特性,以及`headMap()`、`tailMap()`和`subMap()`等方法的使用,并提到了`descendingKeySet()`、`descendingMap()`和`navigableKeySet()`等其他有用的方法。
422

被折叠的 条评论
为什么被折叠?



