映射只要输入 Java
Map with long as key in Java
我的探查器状态我花了很重要的一部分时间将 long
包装成 Long
我想避免。我目前这样做是因为我使用 Map<Long, V>
。有没有一种通常的方法来创建一个键为 long
的地图?
我知道它不会是 Map<long, V>
因为类型系统不允许,但这并不意味着从 long
到 V
的映射不能存在。实际上,这很容易做到,因为我只需要复制 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 将来会解决这个问题。
建议:
- 您能否更改其余代码以首先使用
Long
?
- Long class 缓存从 -127 到 128 (code) 的值。探索是否可以为更大的范围提供类似的内部缓存。
http://fastutil.di.unimi.it/ 是一个 class 库,完全按照我在这里的要求做
我的探查器状态我花了很重要的一部分时间将 long
包装成 Long
我想避免。我目前这样做是因为我使用 Map<Long, V>
。有没有一种通常的方法来创建一个键为 long
的地图?
我知道它不会是 Map<long, V>
因为类型系统不允许,但这并不意味着从 long
到 V
的映射不能存在。实际上,这很容易做到,因为我只需要复制 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 将来会解决这个问题。
建议:
- 您能否更改其余代码以首先使用
Long
? - Long class 缓存从 -127 到 128 (code) 的值。探索是否可以为更大的范围提供类似的内部缓存。
http://fastutil.di.unimi.it/ 是一个 class 库,完全按照我在这里的要求做