我有LinkedList
通用类型State
。在这个LinkedList
中,我有数百甚至数千个State
个对象。我怎样才能以最有效的方式检查新生成的State
对象是否已经在列表中?
州对象:
public State(PlayerAddress player, LinkedList<BoxAddress> boxList, char[][] map, String solution, String stateHash) {
this.player = player;
this.boxList = boxList;
this.map = map;
this.solution = solution;
this.stateHash = stateHash;
boxListString = boxListToString(boxList);
mapString = mapString(map);
}
}
此外,State对象由另一个通用对象组成,如构造函数中所示。如何检查两个State
对象在每个方面是否相同(PlayerAddress,LinkedList等)?
答案 0 :(得分:0)
你试过the contains method?这可行吗?另外不要忘记你可以覆盖东西,所以你可以通过覆盖hascode和比较方法来比较hascodes。
答案 1 :(得分:0)
在你的情况下,我强烈建议你使用contains方法。哪个是最有效的查找案例。
查看java doc for contains:
public boolean contains(Object o) 如果此列表包含指定的元素,则返回true。更正式地说,当且仅当此列表包含至少一个元素e时才返回true(o == null?e == null:o.equals(e))。
所以你应该只需要覆盖你的State类的equals。集合将需要哈希码。