看着this question它让我很好奇使用哪个,Hashset vs ArrayList。 Hashset似乎有更好的查找,ArrayList有更好的插入(对于许多对象)。所以我的问题是,因为我不能使用ArrayList插入,然后使用HashSet搜索它,我将不得不选择其中一个。插入一个ArrayList,转换为HashSet来进行查找,总体上是SLOWER还是只是插入一个HashSet然后查找?或者只是坚持使用ArrayList,虽然查找更糟糕,插入是否可以弥补它?
答案 0 :(得分:2)
这在很大程度上取决于集合的大小和使用方式。即您可以重复使用相同的HashSet
进行复制,这样可以节省您的时间。或者你可以让它们保持最新状态。
为每个元素查找创建HashSet
副本总是会慢一些。
您还可以利用LinkedHashSet
快速插入和HashSet
的查找速度,但需要更低的内存消耗和O(N)
index(int)
操作。< / p>
答案 1 :(得分:1)
您必须根据具体应用决定哪种权衡得到更好的回报。你是先插入所有东西,然后花费其余时间查找,可能偶尔添加一些?使用HashSet
。你有很多重复,你必须压制吗? HashSet
的另一个亮点。你是否一直插入很多东西并且偶尔进行查找?然后使用ArrayList
。等等,还有更多的组合,在某些情况下,你必须对它进行基准测试才能看到。
答案 2 :(得分:1)
这完全取决于您的使用案例。如果正确实现hashCode
方法,HashSet
的插入操作也是O(1)
操作。如果您不需要随机访问元素(使用索引),并且您不需要重复,HashSet
将是更好的选择。