gpt4 book ai didi

java - ArrayList快速查找自定义对象

转载 作者:行者123 更新时间:2023-11-30 06:05:24 27 4
gpt4 key购买 nike

我正在使用ArrayList存储CustomObjects ,问题是需要花费时间在该列表中找到一个对象才能将其删除。 (大约 100K 元素)。

我被迫使用ArrayList因为我必须保持订单不变。

我正在考虑更新 HashMap<Object, Integer>跟踪索引。

问题是当我删除列表中的元素时,我还必须更新 map 中的所有索引,这很慢!

我还必须能够通过索引和对象查找列表中的元素。

如果你能引导我找到某种解决方案:)
谢谢。

编辑:我从头开始实现了所需的 LinkedList,它的工作就像一个魅力,感谢大家的帮助:)

最佳答案

I'm forced to use ArrayList as I have to keep the order as is.

幸运的是,您并不是真的被迫使用 ArrayList ,因为您还有另一个选择:使用 LinkedHashSet ,它保留顺序,并为您提供在 O(1) 中查找和删除项目的选项。

通过此更改,您将无法再通过索引访问项目,并且您需要确保插入到容器中的项目具有 hashCode and equals 的正确实现。 .

I need to find my elements with indexes too

当只有一小部分项目被删除时,一个有点“脏”的选项是保留null。列表中的 s 而不是实际删除该项目。这样你就可以保留HashMap<Object,Integer>与您的ArrayList同步,以增加 null 为代价每次访问数组列表中的项目时都会进行检查。请注意,如果您使用此方法,列表的长度不再表示集合中的项目数。相反,您需要使用 HashMap 中的项目数。

关于java - ArrayList快速查找自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46606402/

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