gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 14:24:49 24 4
gpt4 key购买 nike

嗨,我有每个大小为 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com