我在java中使用Map<Map,Boolean>,当我尝试使用containsKey()方法验证Map时,它总是返回false,内部Map总是更新其键和值。这是类似于下面的代码
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
public class ExampleMap
{
private static Map<Map<Long,Boolean>, Boolean> objectDetailsToSize= new HashMap<>();
public static void main(String[] args)
{
Random rn = new Random();
int size = 10;
Map<Long,Boolean> detailsMap = new HashMap<>();
for(int i=0; i< size; i++)
{
detailsMap.put(rn.nextLong(),rn.nextBoolean());
if(!objectDetailsToSize.containsKey(detailsMap))
{
objectDetailsToSize.put(detailsMap, rn.nextBoolean());
System.out.println("Why containsKey() method is failing here");
}
}
}
}
为什么 Map 的 containsKey() 方法在这里总是失败?
每次通过循环时,您都必须创建一个新detailsMap
- 或复制现有。 现在,您正在修改已放入的地图。