Java 如何获取此HashMap<;整数[],整数>;以我想要的方式工作?

Java 如何获取此HashMap<;整数[],整数>;以我想要的方式工作?,java,hashmap,Java,Hashmap,在我的程序中,我想使用整数[]s的哈希映射,但检索数据时遇到了问题。经过进一步调查,我发现这个程序中没有任何其他内容,只打印null HashMap<Integer[], Integer> a = new HashMap<Integer[], Integer>(); Integer[] b = {5, 7}; Integer[] c = {5, 7}; a.put(b, 2); System.out.println(why.get(c)); HashMap a=newh

在我的程序中,我想使用整数[]s的哈希映射,但检索数据时遇到了问题。经过进一步调查,我发现这个程序中没有任何其他内容,只打印
null

HashMap<Integer[], Integer> a = new HashMap<Integer[], Integer>();
Integer[] b = {5, 7};
Integer[] c = {5, 7};
a.put(b, 2);
System.out.println(why.get(c));
HashMap a=newhashmap();
整数[]b={5,7};
整数[]c={5,7};
a、 put(b,2);
System.out.println(why.get(c));

如果不需要,我不想用
a.keySet()
遍历HashMap。是否有其他方法可以实现所需的结果?

数组存储在映射中,它基于从对象本身计算的哈希值,而不是基于其中包含的值(使用==和equals方法与数组时会发生相同的行为)


您的密钥应该是正确实现.equals和.hashCode的集合,而不是普通数组。

数组存储在映射中,基于从对象本身计算的哈希,而不是基于其中包含的值(使用==和equals方法与数组时会发生相同的行为)


您的密钥应该是正确实现.equals和.hashCode的集合,而不是普通数组。

数组存储在映射中,基于从对象本身计算的哈希,而不是基于其中包含的值(使用==和equals方法与数组时会发生相同的行为)


您的密钥应该是正确实现.equals和.hashCode的集合,而不是普通数组。

数组存储在映射中,基于从对象本身计算的哈希,而不是基于其中包含的值(使用==和equals方法与数组时会发生相同的行为)


您的密钥应该是正确实现.equals和.hashCode的集合,而不是普通数组。

检查此代码以了解不需要的行为:

// this is apparently not desired behaviour
{
    System.out.println("NOT DESIRED BEHAVIOUR");
    HashMap<Integer[], Integer> a = new HashMap<Integer[], Integer>();
    Integer[] b = { 5, 7 };
    Integer[] c = { 5, 7 };
    a.put(b, 2);
    System.out.println(a.get(c));
    System.out.println();
}
// this is the desired behaviour
{
    System.out.println("DESIRED BEHAVIOUR");
    HashMap<List<Integer>, Integer> a = new HashMap<List<Integer>, Integer>();
    int arr1[] = { 5, 7 };
    List<Integer> b = new ArrayList<Integer>();
    for (int x : arr1)
        b.add(x);

    int arr2[] = { 5, 7 };
    List<Integer> c = new ArrayList<Integer>();
    for (int x : arr2)
        c.add(x);

    System.out.println("b: " + b);
    System.out.println("c: " + c);
    a.put(b, 2);
    System.out.println(a.get(c));
    System.out.println();
}
您可能还需要检查以下两个问题:


检查此代码是否存在不符合要求的行为:

// this is apparently not desired behaviour
{
    System.out.println("NOT DESIRED BEHAVIOUR");
    HashMap<Integer[], Integer> a = new HashMap<Integer[], Integer>();
    Integer[] b = { 5, 7 };
    Integer[] c = { 5, 7 };
    a.put(b, 2);
    System.out.println(a.get(c));
    System.out.println();
}
// this is the desired behaviour
{
    System.out.println("DESIRED BEHAVIOUR");
    HashMap<List<Integer>, Integer> a = new HashMap<List<Integer>, Integer>();
    int arr1[] = { 5, 7 };
    List<Integer> b = new ArrayList<Integer>();
    for (int x : arr1)
        b.add(x);

    int arr2[] = { 5, 7 };
    List<Integer> c = new ArrayList<Integer>();
    for (int x : arr2)
        c.add(x);

    System.out.println("b: " + b);
    System.out.println("c: " + c);
    a.put(b, 2);
    System.out.println(a.get(c));
    System.out.println();
}
您可能还需要检查以下两个问题:


检查此代码是否存在不符合要求的行为:

// this is apparently not desired behaviour
{
    System.out.println("NOT DESIRED BEHAVIOUR");
    HashMap<Integer[], Integer> a = new HashMap<Integer[], Integer>();
    Integer[] b = { 5, 7 };
    Integer[] c = { 5, 7 };
    a.put(b, 2);
    System.out.println(a.get(c));
    System.out.println();
}
// this is the desired behaviour
{
    System.out.println("DESIRED BEHAVIOUR");
    HashMap<List<Integer>, Integer> a = new HashMap<List<Integer>, Integer>();
    int arr1[] = { 5, 7 };
    List<Integer> b = new ArrayList<Integer>();
    for (int x : arr1)
        b.add(x);

    int arr2[] = { 5, 7 };
    List<Integer> c = new ArrayList<Integer>();
    for (int x : arr2)
        c.add(x);

    System.out.println("b: " + b);
    System.out.println("c: " + c);
    a.put(b, 2);
    System.out.println(a.get(c));
    System.out.println();
}
您可能还需要检查以下两个问题:


检查此代码是否存在不符合要求的行为:

// this is apparently not desired behaviour
{
    System.out.println("NOT DESIRED BEHAVIOUR");
    HashMap<Integer[], Integer> a = new HashMap<Integer[], Integer>();
    Integer[] b = { 5, 7 };
    Integer[] c = { 5, 7 };
    a.put(b, 2);
    System.out.println(a.get(c));
    System.out.println();
}
// this is the desired behaviour
{
    System.out.println("DESIRED BEHAVIOUR");
    HashMap<List<Integer>, Integer> a = new HashMap<List<Integer>, Integer>();
    int arr1[] = { 5, 7 };
    List<Integer> b = new ArrayList<Integer>();
    for (int x : arr1)
        b.add(x);

    int arr2[] = { 5, 7 };
    List<Integer> c = new ArrayList<Integer>();
    for (int x : arr2)
        c.add(x);

    System.out.println("b: " + b);
    System.out.println("c: " + c);
    a.put(b, 2);
    System.out.println(a.get(c));
    System.out.println();
}
您可能还需要检查以下两个问题:


您还没有指定希望从该代码中获得什么行为?还有,
为什么
没有在任何地方定义。您还没有指定您期望从该代码中获得什么行为?还有,
为什么
没有在任何地方定义。您还没有指定您期望从该代码中获得什么行为?还有,
为什么
没有在任何地方定义。您还没有指定您期望从该代码中获得什么行为?还有,
为什么
没有在任何地方定义。最好是不可修改的集合,例如使用
集合。不可修改的集合
。最好是不可修改的集合,例如使用
集合。不可修改的集合
。最好是不可修改的集合,例如,使用
集合。不可修改的集合
。最好是不可修改的集合,例如使用
集合。不可修改的集合