【发布时间】:2010-06-29 02:07:51
【问题描述】:
我有一个 byte[]s 的 HashSet,我想测试一个新的 byte[] 是否在该集合中。问题在于 Java 似乎是在测试 byte[] 实例是否相同,而不是测试字节数组中的实际值是否相同。
换句话说,考虑以下代码:
public class Test
{
public static void main(String[] args)
{
java.util.HashSet<byte[]> set=new java.util.HashSet<byte[]>();
set.add(new String("abc").getBytes());
System.out.println(set.contains(new String("abc").getBytes()));
}
}
此代码打印出false,我希望它打印出true。我该怎么做呢?
【问题讨论】:
-
在所有这些答案中,请注意更改集合中字节数组的任何元素;这样做会影响它的哈希值和它的相等性,但不会改变它当前存储的哈希桶。