嗨我有每个大小为8个字节的字节数组,我需要将它们存储在散列映射或散列表中。例如,假设我有1000个块...然后它将存储第一个键和值(bytearray),然后当块2通过时,它应该检查它是否已经存在于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
答案 0 :(得分:0)
byte[]
个对象和Java中的其他数组对象具有从equals()
继承的Object
方法,i。即通过引用而不是数组内容进行比较。
解决问题的最简单方法(没有对库的额外依赖)是将8字节数组存储为long
s:
Map<Long, Value> map = new HashMap<>();
...
// map.put(byteArray, value);
map.put(ByteBuffer.wrap(byteArray).getLong(), value);
答案 1 :(得分:0)
解决方案: int collisions = 0; Hashtable ht = new Hashtable(); //在这里给出bloc1值 如果(ht.contains(ByteBuffer.wrap(bloc1).getLong())) {碰撞++;} 其他{ ht.put(I,ByteBuffer.wrap(bloc1).getLong()); }