gpt4 book ai didi

java - 性能:从 HashMap.values() 创建一个 ArrayList

转载 作者:IT老高 更新时间:2023-10-28 20:56:27 25 4
gpt4 key购买 nike

问题是从 HashMap.values() 集合创建 ArrayList 需要多少成本?还是单独创建值集合?假设 Map.size() > 100k。对象也可以一直保存在 ArrayList(而不是 HashMap)中,这对其他部分有影响(元素的修改,很容易按键)。ArrayList 用于迭代每个第 n 个元素。 (这就是为什么不能直接使用 values 集合的原因)。迭代期间不进行任何修改。

最佳答案

HashMap.values() 不返回值的 ArrayList 而是一个 Values 集合。

来源:

 public Collection<V> values() {
Collection<V> vs = values;
return (vs != null ? vs : (values = new Values()));
}

Values 是一个 AbstractCollection。 values的原因只是为了引用HashMap的迭代器。

你的问题:

Question is how much it costs to create an ArrayList from a HashMap.values() Collection?

这是一个线性复杂性(正如 Bozho 所说),因为

ArrayList<V> valuesList = new ArrayList<V>(hashMap.values());

ArrayList, valuesList 调用集合 hashMap toArray() 方法,该方法本质上是执行 for 循环集合中的 0..N(大小)元素。

希望这会有所帮助。

关于java - 性能:从 HashMap.values() 创建一个 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4255075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com