2016-02-27 2 views
0

У меня есть LinkedList общего типа State. В этом LinkedList у меня есть сотни или даже тысячи объектов State. Как я могу, самым эффективным способом, чтобы проверить, есть ли новый созданный объект State в списке?Проверьте, является ли объект родового типа LinkedList

государственный объект:

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 в каждом аспекте (PlayerAddress, LinkedList и т. Д.)?

ответ

0

Вы пробовали the contains method? Это может сработать. Кроме того, не забывайте, что вы можете перезаписать материал, чтобы вы могли также сравнить коды, переписав методы hascode и compare.

0

В вашем случае я настоятельно рекомендую вам использовать метод contains. Какой из них наиболее эффективен для вашего случая.

Глядя на Java документ для содержит:

общественного логический содержит (Object о) Возвращает TRUE, если этот список содержит указанный элемент. Более формально возвращает true тогда и только тогда, когда этот список содержит хотя бы один элемент e такой, что (o == null? E == null: o.equals (e)).

Таким образом, вы должны только перезаписать равные для своего класса State. Для наборов потребуется хэш-код.

+0

Это неправда. операция поиска в связанном списке с тысячами элементов неэффективна вообще. – AdamSkywalker

+0

мы говорим о работе со списком, насколько я понимаю, он не упоминался, если требуется SET, и т. Д. – berlinguyinca

+0

задача заключалась в том, чтобы найти эффективный способ. – AdamSkywalker

Смежные вопросы