Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java的hashmap或hashtable中存储ByteArray_Java_Hashmap_Hashtable - Fatal编程技术网

如何在java的hashmap或hashtable中存储ByteArray

如何在java的hashmap或hashtable中存储ByteArray,java,hashmap,hashtable,Java,Hashmap,Hashtable,嗨,我有字节数组,每个字节大小为8字节,我需要将它们存储在哈希映射或哈希表中。例如,假设我有1000个街区。。。然后它将存储第一个键和valuebytearray,然后在传递block2时,它应该检查它是否已经存在于表中,如果不存在,它应该递增,计数应该递增。我已经编写了存储代码,但问题是它无法搜索,这可能是因为我在字节数组中存储的方式 代码: 问题是:ht.contains没有给出所需的o/p字节[]对象,Java中的其他数组对象具有继承自对象i的equals方法。E按引用进行比较,而不是按数

嗨,我有字节数组,每个字节大小为8字节,我需要将它们存储在哈希映射或哈希表中。例如,假设我有1000个街区。。。然后它将存储第一个键和valuebytearray,然后在传递block2时,它应该检查它是否已经存在于表中,如果不存在,它应该递增,计数应该递增。我已经编写了存储代码,但问题是它无法搜索,这可能是因为我在字节数组中存储的方式

代码:

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

字节[]对象,Java中的其他数组对象具有继承自对象i的equals方法。E按引用进行比较,而不是按数组内容进行比较

在不增加对库的依赖性的情况下解决问题的最简单方法是将8字节数组存储为long:

解决方案: int=0; Hashtable ht=新的Hashtable; //这里给定bloc1值 ifht.containsByteBuffer.wrapbloc1.getLong {碰撞++;} 否则{ ht.puti,ByteBuffer.wrapbloc1.getLong;
}

那么,在添加新的字节数组之前,是否要搜索字节数组或键?这个问题确实需要代码。请展示您的尝试,特别是在提到您有代码之后,您需要编辑您的问题以使其更清楚,然后我们才能帮助您。字节数组是键还是值?如果它们是值,那么就没有问题,错误在别处。还请更详细地解释您遇到的问题。我需要在值中存储字节数组。。。当我添加新值时,key会增加,基本上我想做的是,我有1000字节的数组,大小为8字节。。我需要找到碰撞。。
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());
}  
Map<Long, Value> map = new HashMap<>();
...
// map.put(byteArray, value);
map.put(ByteBuffer.wrap(byteArray).getLong(), value);