Java中的HashMap.values()方法返回的集合是什么?

时间:2013-06-18 14:36:54

标签: java hashmap

Java SE 6.0 API说values()中的java.util.HashMap方法返回Collection类型。 JVM如何确定在运行时返回哪个集合。它是jvm特定的还是Java遵循的任何一般准则。我浏览了HashMap的源代码,但无法得到线索。任何帮助都是高度赞赏,或者如果问题是蹩脚的,请指出我为什么。谢谢。

2 个答案:

答案 0 :(得分:11)

您可以在来源中看到:

public Collection<V> values() {
    if (values == null) {
        values = new AbstractCollection<V>() {
          ...

他们实际上提供了AbstractCollection的自定义实现。

了解这个集合的一个重要事项是它不是Serializable:永远不要尝试在客户端 - 服务器之间发送它。

请注意,此摘录来自Sun JDK来源。这意味着特定于供应商实施

答案 1 :(得分:3)

不是JVM决定在运行时返回哪个集合,而是Map接口的实际实现。在HashMap的情况下,这是HashMap.Values内部类,请参阅HashMap src