我正在尝试找到在HashMap
中找到密钥并返回它的最快方法。
我尝试使用containsKey
,但是在此之前我正在初始化对象,因此哈希码有所不同,并且找不到它。
我像这样使用线性搜索:
Box b = null;
Box box = new Box(10, 5);
for (Box e : cells.keySet()) {
if (box.equals(e)) {
contains = true;
b = e;
}
}
Box
是一个包含x
和y
字段的类。效果很好,但我想知道是否有更快的方法。
答案 0 :(得分:1)
如果您先hashcode()
上课,则需要覆盖equals()
和Box
,以便能够对付HashMap
然后您可以简单地进行:
Box box = new Box(10, 5);
Box b = cells.containsKey(box) ? box : null;