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

Kri*_*mar 10 java hashmap

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

Arn*_*lle 11

你可以在消息来源中看到:

public Collection<V> values() {
    if (values == null) {
        values = new AbstractCollection<V>() {
          ...
Run Code Online (Sandbox Code Playgroud)

他们实际上给出了自定义的实现AbstractCollection.

关于这个集合的一个重要的事情是它不是Serializable:永远不要尝试在客户端 - 服务器之间发送它.

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

  • 请注意,这仅适用于Open JDK和/或HotSpot.可能JRockit或IBM JVM不这样做. (7认同)
  • true :)仅供参考,这个摘录来自Sun JDK实现. (2认同)