Java 在链接结构中删除
您好,我正在尝试测试removeCity(),但它没有删除我提供的任何元素。 另外,如果我在City类中使用addToList()方法,我会得到“Exception in thread”main“java.lang.StackOverflowerError”,而它在测试类中工作正常 有什么帮助吗 迈利斯特 堆栈跟踪 线程“main”java.lang.StackOverflower中出现异常 在城市。(City.java:15) 在城市。(City.java:18) 在城市。(City.java:18) 第15行是构造函数 公共城市(字符串名称、字符串代码) 第18行是addToList 地址列表(新城市(名称、代码))Java 在链接结构中删除,java,linked-list,Java,Linked List,您好,我正在尝试测试removeCity(),但它没有删除我提供的任何元素。 另外,如果我在City类中使用addToList()方法,我会得到“Exception in thread”main“java.lang.StackOverflowerError”,而它在测试类中工作正常 有什么帮助吗 迈利斯特 堆栈跟踪 线程“main”java.lang.StackOverflower中出现异常 在城市。(City.java:15) 在城市。(City.java:18) 在城市。(City.java
我发现您的
方法中的循环removelement
时存在问题。
我不确定这是否能解决你的问题。
如果您得到StackOverflowException
,是否可以在此处放置stacktrace的一部分
Node iter = head.getNext();
Node prev = head;
while(iter != null && !((City) head.getInfo()).getCode().equals(element)){
iter = iter.getNext();
prev = prev.getNext();
}
这条线
while(iter != null && !((City) head.getInfo()).getCode().equals(element))
应该是
while(iter != null && !((City) iter.getInfo()).getCode().equals(element))
iter
而不是head
我发现您的中有一个问题,而在removelement
方法中循环。
我不确定这是否能解决你的问题。
如果您得到StackOverflowException
,是否可以在此处放置stacktrace的一部分
Node iter = head.getNext();
Node prev = head;
while(iter != null && !((City) head.getInfo()).getCode().equals(element)){
iter = iter.getNext();
prev = prev.getNext();
}
这条线
while(iter != null && !((City) head.getInfo()).getCode().equals(element))
应该是
while(iter != null && !((City) iter.getInfo()).getCode().equals(element))
iter
相反head
Alexey已经发现了第一个错误,这里还有两个:
public City(String name, String code) {
super();
this.name = name;
this.code = code;
addToList(new City(name,code)); // <- infinite recursion
}
公共城市(字符串名称、字符串代码){
超级();
this.name=名称;
this.code=代码;
addToList(新城市(名称、代码));//Alexey已经发现了第一个错误,这里还有两个错误:
public City(String name, String code) {
super();
this.name = name;
this.code = code;
addToList(new City(name,code)); // <- infinite recursion
}
公共城市(字符串名称、字符串代码){
超级();
this.name=名称;
this.code=代码;
addToList(new City(name,code));//Alexey的回答解决了问题吗?或者其他方法不起作用了吗?如果是,请同时显示您的主要/测试方法,以便我们自己查看是的,它解决了removeElement。addToList(new City(name,code))还有一个问题##Alexey的回答解决了这个问题吗?或者其他什么东西不起作用了吗?如果是这样,那么请同时显示您的主要/测试方法,以便我们自己查看。是的,它确实解决了removeElement。addToList(新城(名称、代码))##@user2785061随时都可以。@user2785061随时都可以。@user2785061当然。@user2785061=>@user2785061=>
public City(String name, String code) {
super();
this.name = name;
this.code = code;
addToList(new City(name,code)); // <- infinite recursion
}