使用Java中的键作为键进行映射

问题描述

我的探查器状态表明,我花了很大一部分时间来避免将long包装到Long中。我之所以这样做,是因为我使用了Map<Long,V>。有没有通常的方法来创建键为long的Map?

我知道它不会是Map<long,V>,因为类型系统不允许这样做,但这并不意味着从longV的映射不存在。实际上,这很容易做到,因为我只需要复制HashMap<K,V>代码,将K替换为long,并进行类型系统所需的所有更改(例如键上的迭代不再是Iterator<K>

我的问题是这样的图书馆是否已经存在,还是我应该自己做?

上下文是我的探查器指出,在进行批处理时,花费了三分之一的时间将long转换为Long,并且实际上没有理由接受为此付出代价类型系统

解决方法

不支持将其作为generics does not support primitive types。您也不能创建具有基本类型的类(例如HashMap<int,V>)。

也许JEP 218 - Generics over Primitive Types将来会寻求解决这个问题。

建议:

  1. 您是否可以将其余代码更改为首先使用Long
  2. Long类缓存的值从-127到128(code)。探索是否可以在更大范围内使用类似的内部缓存。
,

http://fastutil.di.unimi.it/是一类完全按照我在这里要求的库