首页 > 解决方案 > 对于每个键具有多个值的查找表,Java 集合具有最高性能?

问题描述

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

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

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

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

标签: javaarraysperformance

解决方案


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

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

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

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

因此,aMultiMap<Integer, Set<String>>可以看作是

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

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

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


推荐阅读