需要优化的 Map(k,v) 例如(long, long[]),避免自动装箱
Need an optimised Map(k,v) e.g. (long, long[]), to avoid auto boxing
我有一段代码,基本上如下:
long[] ids;
long[][] values;
这些值是不按顺序填写的,即
if ids = ['id1','id2',...]
值可能是
values = [['id2val1','id2val2',..]['id1val1','id2val2',...],..]
无法避免顺序执行,我正在考虑的方法是使用 Map
Map<Long,Long[]>
、
但由于 java 的自动装箱,无法使用 JAVA 泛型。
我想知道是否可以通过一些使用原语的优化数据结构库来完成,
为了避免不必要的自动装箱,我正在查看像 Koloboke
& Fastutil
.
这样的库
求数据结构推荐
虽然您必须使用装箱 Long
作为映射键,但您不需要将值数组中的基元装箱。您可以使用 Map<Long,long[]>
而不是 Map<Long,Long[]>
。这应该可以减轻您对性能的大部分担忧。
因此,在您开始引入第三方库之前,看看简单的 HashMap<Long,long[]>
是否足以满足您的目的。
我有一段代码,基本上如下:
long[] ids;
long[][] values;
这些值是不按顺序填写的,即
if ids = ['id1','id2',...]
值可能是 values = [['id2val1','id2val2',..]['id1val1','id2val2',...],..]
无法避免顺序执行,我正在考虑的方法是使用 Map
Map<Long,Long[]>
、
但由于 java 的自动装箱,无法使用 JAVA 泛型。
我想知道是否可以通过一些使用原语的优化数据结构库来完成,
为了避免不必要的自动装箱,我正在查看像 Koloboke
& Fastutil
.
这样的库
求数据结构推荐
虽然您必须使用装箱 Long
作为映射键,但您不需要将值数组中的基元装箱。您可以使用 Map<Long,long[]>
而不是 Map<Long,Long[]>
。这应该可以减轻您对性能的大部分担忧。
因此,在您开始引入第三方库之前,看看简单的 HashMap<Long,long[]>
是否足以满足您的目的。