首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将两个长整型映射为一个整数(Java)

如何将两个长整型映射为一个整数(Java)
EN

Stack Overflow用户
提问于 2012-01-20 22:53:58
回答 3查看 315关注 0票数 1

我有两种由long标识的对象,这些对象应该映射到int类型的矩阵中的列或行索引。要映射的对象有数千个,并且只有ID的组合是唯一的(例如,(1,1) -> 0;(1,2) -> 1;... (2,2)->...)。

关键是"long1<a separator>long2"Map<String, Integer>是可行的吗?还是有更好的解决方案?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-20 23:47:16

如何从两个长整型数创建散列

您可以使用以下命令从长整型中创建散列

代码语言:javascript
复制
long l = ...
int hash = (int) ((l >> 32) ^ l);

对于两个长的,你可以在那里组合

代码语言:javascript
复制
long a = ..., b = ...
long l = a * 31 + b;
int hash = (int) ((l >> 32) ^ l);

它不能保证是唯一的,但它不使用任何内存。

票数 1
EN

Stack Overflow用户

发布于 2012-01-20 22:56:15

创建一个包含2个long的对象,并覆盖equals和hashcode方法。然后,您可以将其用作密钥。

票数 11
EN

Stack Overflow用户

发布于 2012-01-20 23:01:18

为什么不创建一个对象来保存这两个long变量。

代码语言:javascript
复制
class Key {
    private long var1;
    private long var2;
    boolean equals(Object o) {...}
    int hashCode() {...}
};
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8943269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档