How to make Java hashtable Containskey is applicable to array?

I'm sorry to ask this question, but I'm new to Java

Hashtable<byte[],byte[]> map = new Hashtable<byte[],byte[]>();
byte[] temp = {1,-1,0};
map.put(temp,temp);
byte[] temp2 = {1,0};;
System.err.println(map.containsKey(temp2));

Not applicable to Containskey (because the print result is "false")

Hashtable<Integer,Integer> mapint = new Hashtable<Integer,Integer>();
int i = 5;
mapint.put(i,i);
int j = 5;
System.err.println(mapint.containsKey(j));

Work (print "true")

I know it's related to object references, but I can't reach any solution after searching

Can I use hashtable to find keys with array type anyway? I just want to test whether a specific array is used as a key in hashtable

Any click would be great thank you!!!

Solution

You can't use arrays as keys in hashtable / HashMap because they won't override the default implementation of object's equals, which means temp Equals (temp2) if and only if temp = = temp2, this is an incorrect case in your case

You can use set < byte > or list < byte > instead of the key's byte []

For example:

Hashtable<List<Byte>,Byte[]> map = new Hashtable<List<Byte>,Byte[]>();
Byte[] temp = {1,0};
map.put(Arrays.asList(temp),temp);
Byte[] temp2 = {1,0};;
System.err.println(map.containsKey(Arrays.asList(temp2)));
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>