gpt4 book ai didi

java - 无 IndexOutOfBounds 异常的索引加法

转载 作者:行者123 更新时间:2023-11-29 05:53:57 25 4
gpt4 key购买 nike

我有 n 个对象,每个对象都有一个标识号。我让它们未排序,但索引范围 (0, n-1) 用于识别它们。我想尽快访问它们。我想 ArrayList 是最好的选择,我会在索引为 n 的 ArrayList 的位置添加标识符为 n 的对象:

list.add(identifier, object);

问题是,当我添加对象时,我得到一个 IndexOutOfBounds Exception,因为我添加它们时未排序并且 size() 较小,尽管我知道以前的职位也将被填补。

另一种选择是使用 HashMap,但我认为这会降低性能。

您知 Prop 有上述行为的集合吗?

最佳答案

Do you know a collection that has the behavior described above?

听起来您需要一个普通的旧 Java 数组。如果你需要它作为一个集合,那么使用“Arrays.asList(...)”创建一个 List它的包装器。

现在,如果您需要从数组/集合中添加或删除元素,这将不起作用,但从您的问题描述来看,您似乎不需要这样做。

如果您确实需要添加/删除元素(不同于使用 set 更新给定位置的元素,那么 Peter Lawrey 的方法是最好的。


相比之下,HashMap<Integer, Object>将是一个昂贵的选择。粗略估计,与等效数组或 ArrayList 相比,“索引”操作至少要慢 10 倍,并且数据结构将占用 10 倍的空间。类型。如果数组很大且稀疏,则基于哈希表的解决方案才是真正可行的替代方案(从性能角度来看)。

关于java - 无 IndexOutOfBounds 异常的索引加法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12891573/

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