我需要一个实现 Iterable 的类,并且不需要对并发使用是安全的。在 LinkedList、HashSet、ArrayList 等各种选项中,哪个是最轻的?
为了阐明用例,我需要能够向 Iterable 添加一些对象(通常为 3 或 4 个),然后需要对其进行迭代。
我需要一个实现 Iterable 的类,并且不需要对并发使用是安全的。在 LinkedList、HashSet、ArrayList 等各种选项中,哪个是最轻的?
为了阐明用例,我需要能够向 Iterable 添加一些对象(通常为 3 或 4 个),然后需要对其进行迭代。
数组列表。来自 Javadoc
添加操作在摊销常数时间内运行,即添加 n 个元素需要 O(n) 时间。所有其他操作都以线性时间运行(粗略地说)。与 LinkedList 实现相比,常数因子较低。
这完全取决于你所说的“最轻的重量”是什么意思。您需要执行哪些操作,多久执行一次?您事先知道最终尺寸吗?您是否要节省执行时间或内存?
我同意 zkarthik 这ArrayList
通常是一个不错的选择......但如果你想创建一个大集合然后反复删除第一个元素,它会表现得很糟糕。有这么多不同的集合有一个很好的理由:它们在不同的情况下具有不同的性能特征。
它们都有非常不同的特性和行为,所以你应该根据你将如何使用它们来做出选择。例如,对于随机访问和高局部性,使用 ArrayList;如果您需要快速无序插入和查询,请使用 HashSet。
如果“轻量级”是指“最佳性能”,那么在不了解如何使用该集合的情况下几乎不可能回答这个问题。你告诉我们的只是它不需要支持并发使用,但为了有希望回答这个问题,我们需要知道类似的事情
许多人建议 ArrayList 可能是最好的。但是,我似乎记得读过(可能在 Effective Java 2nd edition 中),对于某些使用模式,Queue的性能优于 List,因为它不会产生随机访问的惩罚。换句话说,您可以以任何顺序从列表中添加/删除项目,但您只能以特定顺序添加/删除队列中的项目(即添加到尾部,从头部删除)。