我有一个 byte[]
的 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
。我应该怎么做?
最佳答案
您可以使用 ByteBuffer.wrap
包装每个字节数组,这将为您提供正确的 equals 和 hashCode 行为。请注意您在 ByteBuffer
上调用的方法(不要修改数组或推进其指针)。
关于Java 一组字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3137395/