Java 一组字节数组

标签 java set

我有一个 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/

相关文章:

java - 返回在 Java 中作为反向文本输入的字符串

java - Playframework 临时表单验证已执行,但未按预期工作

Java 8 : mapping list inisde a list

scala - 是否有 EnumSet/EnumMap 的 Scala 等价物?

Python 根据应用于集合中元素的函数创建结果并集

java - 将 RequestBody json 转换为对象 - Spring Boot

Java 8 急切地获取中间流操作的结果

java - 具有不同数组参数的构造函数 java

python - 使用 Python 查找二进制缓冲区中的所有单词

python - 将集合转换为列表时,什么决定项目顺序?