Начиная с Java 8, давайте посмотрим на источник LinkedHashMap
.Мы можем вычесть внутреннее поведение из определений методов entrySet()
и values()
:
- Метод
entrySet()
возвращает new LinkedEntrySet()
встрока 627, которая использует new LinkedEntryIterator()
в качестве итератора, начиная со строки 634. - Метод
values()
возвращает new LinkedValues()
в строке 581, которая использует new LinkedValueIterator()
в качестве итератора, начиная со строки 588.
Теперь давайте посмотрим на источники этих внутренних классов, определенных в том же файле, начиная со строки 737:
final class LinkedValueIterator extends LinkedHashIterator
implements Iterator<V> {
public final V next() { return nextNode().value; }
}
final class LinkedEntryIterator extends LinkedHashIterator
implements Iterator<Map.Entry<K,V>> {
public final Map.Entry<K,V> next() { return nextNode(); }
}
Они оба расширяют LinkedHashIterator
, что подразумевает доступ к значениямкарта будет обрабатываться одинаково с использованием entrySet()
и values()
.