【问题标题】:HashSet vs ArrayList Speed? Insert vs Lookup ( Java )HashSet vs ArrayList 速度?插入与查找(Java)
【发布时间】:2013-11-19 08:23:58
【问题描述】:

看着this question,这让我很好奇要使用哪个,Hashset vs ArrayList。 Hashset 似乎有更好的查找和 ArrayList 有更好的插入(对于许多对象)。所以我的问题是,由于我不能使用 ArrayList 插入,然后使用 HashSet 搜索它,我将不得不选择其中一个。使用 ArrayList 插入,转换为 HashSet 进行查找,总体上会比仅插入 HashSet 然后查找要慢吗?还是坚持使用ArrayList,虽然查找更差,但插入弥补了?

【问题讨论】:

标签: java arraylist hashset


【解决方案1】:

这在很大程度上取决于集合的大小和您使用它的方式。 IE。您可以重复使用相同的HashSet 进行复制,这样可以节省您的时间。或者您可以让它们保持最新状态。

为每个元素查找创建一个HashSet 副本总是会比较慢。

您还可以使用LinkedHashSet,它具有快速插入和HashSet 的查找速度,但内存消耗和O(N) index(int) 操作会稍差一些。

【讨论】:

    【解决方案2】:

    这完全取决于您的用例。如果正确实现hashCode方法,HashSet的插入操作也是O(1)操作。如果您不需要随机访问元素(使用索引),并且不想重复,HashSet 会是更好的选择。

    【讨论】:

      【解决方案3】:

      您必须为您的特定应用决定哪种权衡取舍更划算。您是先插入所有内容,然后将其余时间花在查找上,或者偶尔添加一些吗?使用HashSet。你有很多重复,你必须压制吗? HashSet 的另一个优点。您是否一直插入很多内容并且只偶尔进行查找?然后使用ArrayList。等等,还有更多组合,在某些情况下,您必须对其进行基准测试才能看到。

      【讨论】:

        猜你喜欢
        • 2012-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-28
        相关资源
        最近更新 更多