[英]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.