gpt4 book ai didi

java - 如何让 Java Hashtable.containsKey 为 Array 工作?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:25:01 24 4
gpt4 key购买 nike

很抱歉问这个问题,但我是 Java 的新手。

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

不适用于 .containsKey(因为打印结果为“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));

有效(打印结果为“True”)

我知道是跟对象引用有关,但是搜索后没有找到任何解决方法...

无论如何我可以使用 Hashtable 来查找 Array 类型的键吗?我只是想测试一个特定的数组是否在 Hashtable 中作为键...

任何命中都会很棒。谢谢!!!

最佳答案

您不能将数组用作 HashTable/HashMap 中的键,因为它们不会覆盖 Object 的默认实现的 equals , 这意味着 temp.equals(temp2)当且仅当 temp==temp2 ,这在您的情况下是不正确的。

您可以使用 Set<Byte>List<Byte>而不是 byte[]为你的 key 。

例如:

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

关于java - 如何让 Java Hashtable.containsKey 为 Array 工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33518990/

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