1

我只是想知道......如何以ConcurrentHashMap最佳HashMap方式投射?

非常感谢任何有用的评论

4

2 回答 2

8

为什么你需要这样做?只需将其转换为Map.

于 2012-09-18T17:29:00.830 回答
4

AConcurrentHashMap不是 a HashMap(在严格的类继承意义上),所以你不能执行这个转换。就像 Keith 所说,您最好将其视为 aMap并且让您的客户端代码不关心实现。如果您真的想将 aConcurrentHashMap变成 a HashMap,请使用构造函数HashMap(Map),但这需要创建并填充一个全新的 Map。

我将澄清我的“将其视为Map”建议。您编写代码的常用方式(除非您真的需要独特的功能HashMap或者ConcurrentHashMap是这样的:

Map<K, V> myMap = new HashMap<K, V>();

或者

Map<K, V> myMap = new ConcurrentHashMap<K, V>():

但不是

//Don't do this unless you have a good reason!
HashMap<K, V> myMap = new HashMap<K, V>();

保持通用性并将变量定义myMap为 aMap而不是 a的优点HashMap是它可以让您更改您使用的实现,而无需担心。

于 2012-09-18T17:44:21.753 回答