这是一个关于java的简单问题.
今天,我在做一些寻路时,我不得不使用contains()发现如果一个类Coord是在其他keySet()的Coord.我发现,当我习惯于预制方法时containsKey(),根本就没有按照我想要的方式工作.我做了一个测试,以了解发生了什么,这里是:
HashMap<Coord, Coord> test = new HashMap<Coord, Coord>();
test.put(new Coord(3, 3), new Coord(0, 0));
System.out.println("HashMap test for containsKey : " + test.containsKey(new Coord(3, 3)));
boolean containsKey = false;
for(Coord a : test.keySet())
{
if(a.equals(new Coord(3, 3)))
{
containsKey = true;
}
}
System.out.println("My test for containsKey : "+containsKey);
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,这是我发现的:
HashMap test for containsKey : false
My test for containsKey : true
Run Code Online (Sandbox Code Playgroud)
我只是想知道发生了什么以及为什么.
另外,这是Coord班级:
public class Coord
{ …Run Code Online (Sandbox Code Playgroud)