问题是从 HashMap.values() 集合创建 ArrayList 需要多少钱?还是单独创造价值集合?
假设 Map.size() > 100k。
对象也可以一直保存在 ArrayList(而不是 HashMap)中,这对其他部分有影响(元素的修改,通过键很容易)。
ArrayList 用于迭代每个第 n 个元素。 (这就是为什么不能直接使用值集合的原因)。迭代期间不进行任何修改。
HashMap.values()
不返回ArrayList
的值,但Values
收藏。
Source:
public Collection<V> values() {
Collection<V> vs = values;
return (vs != null ? vs : (values = new Values()));
}
Values
is an AbstractCollection
。 value 的原因只是为了引用 HashMap 的迭代器。
你的问题:
问题是要花多少钱
从 a 创建一个 ArrayList
HashMap.values() 集合?
这是一个线性复杂度(正如 Bozho 所说),因为
ArrayList<V> valuesList = new ArrayList<V>(hashMap.values());
数组列表,valuesList
调用集合hashMap
toArray()
方法本质上是做一个for
从集合中的 0..N(大小)个元素开始循环。
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)