Что такое коллекция, которая HashMap.метод values () в Java возвращает?

Java SE 6.0 API говорит values() метод java.util.HashMap возвращает Collection тип. Как JVM решает, какую коллекцию возвращать во время выполнения. Является ли это конкретным jvm или есть какие-либо общие рекомендации, которым следует Java. Я просмотрел исходный код HashMap но не мог понять. Любая помощь высоко ценится, или если вопрос хромает, любезно укажите мне, почему.Спасибо.

2 ответов


вы можете увидеть в источниках:

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

они фактически дают пользовательскую реализацию AbstractCollection.

важно знать об этой коллекции, что она не Сериализуема : никогда не пытайтесь отправить ее как есть между клиентом и сервером.

обратите внимание, что этот экстракт поступает из источников Sun JDK. Это значит, что это конкретной реализации продавцом.


не JVM решает, какую коллекцию возвращать во время выполнения, а фактическая реализация интерфейса карты. В случае HashMap это HashMap.Значения внутреннего класса, см. HashMap src