3

谁能帮我弄清楚 SortedMap、CheckedSortedMap、synchronizedSortedMap 之间的区别。我真的很难决定何时使用哪一个?

提前致谢。

4

2 回答 2

2

SortedMap是一个接口,它是一个 Map(键值对),并带有一个附加的合约,即在其键上以某种定义的方式进行排序。由于键的排序,SortedMap 有额外的方法SortedMap<K,V> subMap(K fromKey, K toKey),比如SortedMap<K,V> headMap(K toKey) ...'普通' Maps 没有。如果你迭代一个 sortedMap 的键集,你会发现一个明确的顺序。

ATreemap是该接口的实现。如果您自己创建一个新的 SortedMap 对象,它几乎总是选择TreeSet.

对于checkedSortedMap或任何其他Collections.checkedXXX()方法,以下是关于它们的用途的很好的讨论:Java 中的 Collections.checkedList() 调用是什么?

Collections 框架中的类默认情况下是不同步的。对于地图,这意味着如果您有一个在两个或多个线程之间共享的地图,并且一个正在执行 aput(A, value)并且另一个线程也在地图上同时调用put(A, othervalue),则可能会发生奇怪的事情。Collections.synchronizedSortedMap(sortedMap)方法给出了一个同步的映射,它包装了给定的映射并具有适当的锁定机制。

于 2012-10-16T06:32:55.587 回答
0

SortedMap是一个接口,由ConcurrentSkipListMap, TreeMap类实现。

用于Collections.synchronizedSortedMap获取已排序映射的线程安全(同步)视图。在多线程环境中很有用。

用于java.util.Collections.checkedSortedMap获取指定排序映射的动态类型安全视图。

于 2012-10-16T05:10:59.350 回答