java - 如何在java中的hashmap或hashtable中存储字节数组

标签 java hashmap hashtable

嗨,我有每个大小为 8 字节的字节数组,我需要将它们存储在 HashMap 或哈希表中。例如,假设我有 1000 个 block ...那么它将存储第一个键和值(bytearray),然后当传递 block2 时,它应该检查它是否已经存在于 hahtable 中,如果不存在,它应该递增,并且计数应该递增。我已经编写了存储代码,但问题是它无法搜索,可能是因为我在字节数组中存储的方式。

代码:

int collisions = 0;
Hashtable<Integer, Long> ht = new Hashtable<Integer, Long>();
// Given bloc1 value here
if(ht.contains(bloc1)) {
  collisions++;
}
else {
  ht.put(i,ByteBuffer.wrap(bloc1).getLong());
}  

问题是:ht.contains 没有给出所需的 o/p

最佳答案

byte[] 对象,以及 Java 中的其他数组对象都有继承于 Objectequals() 方法,即: e.通过引用进行比较,而不是通过数组内容进行比较。

解决问题的最简单方法(无需额外依赖库)是将 8 字节数组存储为 long:

Map<Long, Value> map = new HashMap<>();
...
// map.put(byteArray, value);
map.put(ByteBuffer.wrap(byteArray).getLong(), value);

关于java - 如何在java中的hashmap或hashtable中存储字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26791295/

相关文章:

java - 如何使用 Netbeans 的 Rest Web 服务中的 JoinTable 列进行查询

java - 遍历字符串中所有字符的最快方法

java - 如何避免 MVEL PropertyAccessExceptions

java - 使用不可序列化的对象序列化 hashmap

android - 如何在 SharedPreferences 中存储 ArrayList<HashMap<String, String>>?

c - 释放已用数据的内存会导致段错误

algorithm - 插入和搜索时哈希表的时间复杂度

JAVA - POST 到 PHP,不接收变量

java - 需要一个方法来查找 HashMap 中的值

Python 日期哈希表