[英]Hash map with long values
我想创建一个哈希映射类型的对象映射Element
,以long
价值。 到目前为止,我所做的是:
class Element {
public int x;
public int y;
}
public class HelloWorld
{
public static void main(String[] args)
{
HashMap<Element, Integer> marks = new HashMap<Element, Integer>();
Element e = new Element();
}
}
从我看到的内容来看, Integer
是一个包装,将一个int
转换为一个int
类型的Object
。 我怎么能long
做同样的事情?
我怎么能
long
做同样的事情?
所有原语都有对应的包装器类:
Primitive type Wrapper class
boolean Boolean
byte Byte
char Character
float Float
int Integer
long Long
short Short
double Double
您可以使用Long
,这是Long
的对象(包装)版本。 Java通过自动装箱自动为您处理此转换。
请参阅文档以获取更多信息: https : //docs.oracle.com/javase/tutorial/java/data/autoboxing.html
另一种方法是使用fastutil库。 在标准的Java容器中使用和存储小对象(例如您的情况)可能效率不高。 该库通过为所有原始类型提供单独的容器实现来解决此问题。
您可以使用Object2LongOpenHashMap 。
更好的是,由于密钥只有8个字节长,因此可以将x
和y
融合为单个long原语,并使用Long2LongOpenHashMap (或Long2LongArrayMap)。 像这样:
void put(Long2LongOpenHashMap map, Element key, long value) {
long k = ((long)key.x << 32) | key.y;
map.put(k, value);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.