Исходный код HashMap.values()
показан следующим образом
public Collection<V> values() {
Collection<V> vs = values;
return (vs != null ? vs : (values = new Values()));
}
Как вы можете видеть, при первом вызове метода values()
он просто возвращает объект Values
. Объект Values
является подклассом AbstractCollection
без конструктора и, конечно, не содержит элемента. Но когда я вызвал метод, он быстро возвращал коллекцию
Collection<String> values = map.values();
System.out.println(values);
Это так странно. Не только values()
, но и методы keySet()
и entrySet()
возвращают такие пустые объекты. Итак, вот мой вопрос, когда и как эти методы возвращают объекты с элементами, которые нам нужны?