检查泛型类型的对象是否在LinkedList中

时间:2016-02-27 19:27:15

标签: java list linked-list

我有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等)?

2 个答案:

答案 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。集合将需要哈希码。