【问题标题】:Java collection with most performance for lookup table with multiple values per key?对于每个键具有多个值的查找表,Java 集合具有最高性能?
【发布时间】:2020-05-08 14:48:47
【问题描述】:

我希望实现一个转换过程,基于接收一些值,我想返回一个或多个类的实例。

我需要以尽可能高的速度执行此操作,因为它被用作实时过程的一部分。

我有30000个类的集合,每个类都有一个对应的key,匹配一个要接收的信号,有些类可以链接到同一个key

哪个选项最有效,还是需要考虑其他选项?

  • Multimap

  • Map<String, ArrayList<Class>>

  • ArrayList<Class> 并使用谓词搜索?

【问题讨论】:

  • HashMap> 我建议
  • Map<String, long>ArrayList<Class>,以并行化一些间接并消除开销。

标签: java arrays performance


【解决方案1】:

您的选择应基于最频繁的操作,在本例中为搜索。

Lists 为您提供插入 O(1) 和 O(n) 搜索的最佳复杂度

A MultiMap<A, B> 将 A 类型的键与 Collection 类型的值相关联

A Map<A, B> 将 A 类型的键与 B 类型的值相关联。

所以,MultiMap<Integer, Set<String>> 可以被视为

Map<Integer, Collection<Set<String>>.

两者都给出 O(1) 插入,最坏情况 O(k) k 是值中最长的集合。 k 很大程度上取决于散列函数的质量,使用好的散列函数查找时间可以是 O(1)。

所以我会选择MapMultiMap。如果你只初始化一次结构然后从不插入新元素,那么一定要使用Map

【讨论】:

    猜你喜欢
    • 2013-01-23
    • 2015-07-08
    • 2011-01-04
    • 1970-01-01
    • 2012-03-05
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 2015-01-22
    相关资源
    最近更新 更多