小编Pâr*_*ady的帖子

HashMap做的containsKey行为方式不符合预期

这是一个关于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)

java contains hashmap

4
推荐指数
1
解决办法
299
查看次数

标签 统计

contains ×1

hashmap ×1

java ×1