gpt4 book ai didi

Java 列表/集合性能

转载 作者:行者123 更新时间:2023-12-01 19:57:51 26 4
gpt4 key购买 nike

我必须与 Collection 一起工作,我不确定是否使用 ListSet 。该集合必须排序,但不是按插入顺序排序,而是按另一个集合排序,因此每次添加新项目时,都会出现 Comparator 。应该执行以重新排序 Collection 。因此,出于这个原因,一个 ArrayList可能是最好的选择。

从中删除对象 Collection也一定是可能的,此外,我真的很感激使用 removeIf方法,所以一个Set将是这里的最佳选择。

获取并迭代Collection会是重复次数最多的场景,所以在这个场景下一定有很好的表现。

看到这一点,我认为 Set将是一个不错的决定,但是,我正在考虑转换 Set进入List添加项目时,一旦列表被重新排列,将其转换回 Set 。是不是表现不好?你觉得怎么样?

提前致谢

最佳答案

除非您进行批量插入且不需要排序,否则 TreeSet 就可以。只需测量两种解决方案即可。

使用 TreeSet 插入已排序的项目(例如从磁盘重新读取集合),性能会很差,因为即使是平衡树,也会有太大的深度。不过,这是可以补救的。

为了获得更好的性能,您可以使用 B 树(需要第 3 方代码)而不是二进制 TreeSet。 也要衡量这一点,因为通常删除和重新平衡等方面可能做得不够理想。

关于Java 列表/集合性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48861420/

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