映射只要输入 Java

Map with long as key in Java

我的探查器状态我花了很重要的一部分时间将 long 包装成 Long 我想避免。我目前这样做是因为我使用 Map<Long, V>。有没有一种通常的方法来创建一个键为 long 的地图?

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

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

上下文是我的分析器指出,在进行批处理时,有三分之一的时间花在将 long 转换为 Long,并且真的没有理由接受支付这个类型系统的价格

不支持 generics does not support primitive types。您也不能使用原始类型创建 class(如 HashMap<int,V>)。

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

建议:

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

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