我有一个SortedMap,根据其键的自然顺序排序.我可以安全地将其keySet()强制转换为SortedSet,而不会冒无效的强制转换异常.
也就是说,下面会抛出什么?
SortedMap<K, V> map = ...;
SortedSet<K> set = (SortedSet<K>) map.keySet();
Run Code Online (Sandbox Code Playgroud)
如果答案是"取决于SortedMap的实现",那么这对TreeMap来说至少是安全的吗?
ass*_*ias 15
对于SortedMap一般,没有因为它不是在Javadoc文档.
但是,TreeMap也实现了NavigableMap,它使用NavigableSet一个键集并NavigableSet扩展SortedSet...
所以你能做的是:
NavigableMap<K, V> map = ...; //can be a TreeMap or a ConcurrentSkipListMap
SortedSet<K> set = map.navigableKeySet();
Run Code Online (Sandbox Code Playgroud)
SortedMap<String, String> treeMap = new TreeMap<String, String>();
// prints true
System.out.println(treeMap.keySet() instanceof SortedSet);
// prints false
System.out.println(Collections.synchronizedSortedMap(treeMap).keySet() instanceof SortedSet);
Run Code Online (Sandbox Code Playgroud)
所以答案是否定的.
TreeMap.keySet()返回a SortedSet,但javadoc无法保证.
的NavigableMap接口,其延伸SortedMap,有一个navigableSet()方法,该方法returs一个NavigableSet,它扩展SortedSet,虽然.
| 归档时间: |
|
| 查看次数: |
2044 次 |
| 最近记录: |