我有两种由long标识的对象,这些对象应该映射到int类型的矩阵中的列或行索引。要映射的对象有数千个,并且只有ID的组合是唯一的(例如,(1,1) -> 0;(1,2) -> 1;... (2,2)->...)。
关键是"long1<a separator>long2"的Map<String, Integer>是可行的吗?还是有更好的解决方案?
谢谢
发布于 2012-01-20 23:47:16
如何从两个长整型数创建散列
您可以使用以下命令从长整型中创建散列
long l = ...
int hash = (int) ((l >> 32) ^ l);对于两个长的,你可以在那里组合
long a = ..., b = ...
long l = a * 31 + b;
int hash = (int) ((l >> 32) ^ l);它不能保证是唯一的,但它不使用任何内存。
发布于 2012-01-20 22:56:15
创建一个包含2个long的对象,并覆盖equals和hashcode方法。然后,您可以将其用作密钥。
发布于 2012-01-20 23:01:18
为什么不创建一个对象来保存这两个long变量。
class Key {
private long var1;
private long var2;
boolean equals(Object o) {...}
int hashCode() {...}
};https://stackoverflow.com/questions/8943269
复制相似问题