gpt4 book ai didi

java - 一定大小的数组的HashMap

转载 作者:行者123 更新时间:2023-12-01 09:53:19 24 4
gpt4 key购买 nike

我想创建一个数组的 HashMap,并且我希望数组都具有固定大小 (8)。我该怎么做?

我已经尝试过:

HashMap<Boolean[8],Boolean[8]> map = new HashMap<>();

它似乎不起作用,它只是想让我删除 8。

我做错了什么?

最佳答案

这里的问题是您尝试使用 Boolean[8] 作为类型,但正确的类型是 Boolean[]。但是,这可能不会达到您的预期,因为 Java 数组的 hashCodeequals 方法是使用引用实现的。

这里的含义的简单示例:

int[] a = new int[] {0};
int[] b = new int[] {0};

System.out.println(a.hashCode());
// 705927765 ; changes every time

System.out.println(b.hashCode());
// 366712642 ; changes every time

System.out.println(a.equals(b));
// false

因此,如果必须使用集合作为 HashMap 中的键,则应考虑使用 List,它实现了 equalshashCode基于包含的值的方法。

List<Integer> a = new ArrayList<>();
List<Integer> b = new ArrayList<>();
a.add(new Integer(0));
b.add(new Integer(0));

System.out.println(a.hashCode());
// 31

System.out.println(b.hashCode());
// 31

System.out.println(a.equals(b));
// true

现在,与您的确切示例相关,您尝试使用 Boolean 数组。如果数组的大小有界且小于64,则可以使用数值类型来表示。只需用 1 表示 true,用 0 表示 false

Java 数字类型大小的提醒:

  • 字节/字节:8 位
  • 短/短:16 位
  • int/整数:32 位
  • 长/长:64 位

关于java - 一定大小的数组的HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37450373/

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