Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查LinkedList中是否存在泛型类型的对象_Java_List_Linked List - Fatal编程技术网

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

Java 检查LinkedList中是否存在泛型类型的对象,java,list,linked-list,Java,List,Linked List,我有一个链接列表,属于泛型状态。在这个LinkedList中,我有数百甚至数千个State对象。如何以最有效的方式检查新生成的状态对象是否已在列表中 国家目标: public State(PlayerAddress player, LinkedList<BoxAddress> boxList, char[][] map, String solution, String stateHash) { this.player = player; this.boxList =

我有一个
链接列表
,属于泛型
状态
。在这个
LinkedList
中,我有数百甚至数千个
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);
}
}
公共状态(PlayerAddress播放器、LinkedList框列表、字符[][]映射、字符串解决方案、字符串状态哈希){
this.player=player;
this.boxList=boxList;
this.map=map;
这个解决方案=解决方案;
this.stateHash=stateHash;
boxListString=boxListToString(boxList);
mapString=mapString(map);
}
}

此外,状态对象由另一个通用对象组成,如构造函数中所示。如何检查两个
状态
对象是否在各个方面都相同(PlayerAddress、LinkedList等)?

您是否尝试过这一方法。另外,不要忘记您可以覆盖内容,因此您也可以通过覆盖hascode和比较方法来比较hascode。

在您的情况下,我强烈建议您使用contains方法。哪一个是最有效的案例查找

查看java文档中包含的内容:

公共布尔包含(对象o) 如果此列表包含指定的元素,则返回true。更正式地说,当且仅当此列表包含至少一个元素e时(o==null?e==null:o.equals(e))返回true


因此,您应该只需要覆盖State类的equals。集合将需要哈希代码。

这不是真的。在包含数千个元素的链表中进行查找操作根本没有效率。我们讨论的是使用列表,据我所知,没有提到是否需要一个集合,如果我们对fast如此明确,而不关心实现,并且假设可以更改实际的数据结构,那么我推荐一个这样的库,它可以很好地工作。老实说,我认为他想留在hist list,而不是维护两个不同的集合,ETC。尤其是因为我不知道他的记忆力。我们甚至可以更进一步,转向scala并利用并行收集,以进一步提高查找时间。