Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用map检查是否包含数组。但不起作用_Java_Arrays_Map - Fatal编程技术网

Java 使用map检查是否包含数组。但不起作用

Java 使用map检查是否包含数组。但不起作用,java,arrays,map,Java,Arrays,Map,我有一个关于Java地图的问题。我使用map来包含数组,我想检查map是否包含我想要的数组。但它不起作用。是否仍要检查映射是否包含我想要的数组 import java.util.*; public class testContainKey{ static Map<int[],Integer> map = new HashMap<int[], Integer>(); public static void main(String args[]){ int[]

我有一个关于Java地图的问题。我使用map来包含数组,我想检查map是否包含我想要的数组。但它不起作用。是否仍要检查映射是否包含我想要的数组

import java.util.*;

 public class testContainKey{
 static Map<int[],Integer> map = new HashMap<int[], Integer>(); 
  public static void main(String args[]){
   int[] initial={1,2,3,4,5,6,7,8,9};
   int[] goal = {1,2,3,4,5,6,7,8,9};
   map.put(goal,0);
   if(map.containsKey(array)){
    System.out.println("OK");
  }
   else{
     System.out.println("Not works");
   }
 }
}
import java.util.*;
公共类testContainKey{
静态映射映射=新的HashMap();
公共静态void main(字符串参数[]){
int[]首字母={1,2,3,4,5,6,7,8,9};
int[]目标={1,2,3,4,5,6,7,8,9};
map.put(目标,0);
if(map.containsKey(数组)){
System.out.println(“OK”);
}
否则{
System.out.println(“不工作”);
}
}
}

调用
Map.containsKey()
时,它使用数组的
.equals()
,比较两个对象。由于initial和goal是两个不同的数组,
initial.equals(goal)
将始终为false,即使数组的内容相同


可以做的事情是扩展Map并覆盖
Map.containsKey()
以检查int[],并比较每个元素以确定相等性。

当调用
Map.containsKey()
时,它使用数组的
.equals()
,它比较两个对象。由于initial和goal是两个不同的数组,
initial.equals(goal)
将始终为false,即使数组的内容相同


您可以做的事情是扩展Map并覆盖
Map.containsKey()
以检查int[],并比较每个元素以确定相等性。

这是行不通的:
Map
基于哈希代码和相等性检查;数组在计算哈希代码时不注意其元素。这就是为什么您尝试用作键的两个数组被认为是不同的


您可以定义一个类
ArrayKey
,将一个数组放入构造函数中,并定义使用数组元素的
equals
hashCode

这是行不通的:
Map
基于哈希代码和相等检查;数组在计算哈希代码时不注意其元素。这就是为什么您尝试用作键的两个数组被认为是不同的


您可以定义一个类
ArrayKey
,将数组放入构造函数中,并定义使用数组元素的
equals
hashCode

您将数组用作映射的键,这很难控制,因为您无法修改
equals()
hashCode())

你正在使用一个数组作为地图的键,这个数组很难控制,因为你不能修改它的
equals()
hashCode()

他在比较目标与目标,他从不把初始数组放在地图中他在比较目标与目标,他从不将初始数组放在可能重复的映射中