HashMap.values()
не возвращает ArrayList
значений, но Values
Коллекция.
Источник:
public Collection<V> values() {
Collection<V> vs = values;
return (vs != null ? vs : (values = new Values()));
}
Values
является AbstractCollection
.Причина значений - просто ссылка на итератор HashMap.
Ваш вопрос:
Вопрос в том, сколько стоит создание ArrayList из коллекции HashMap.values ()?
Это линейная сложность (как сказал Божо), поскольку
ArrayList<V> valuesList = new ArrayList<V>(hashMap.values());
ArrayList, valuesList
вызывает метод hashMap
toArray()
коллекции, который по существу выполняет цикл for
от 0..N (размер) элемента в коллекции.
Надеюсь, это поможет.