Java 在链接结构中删除

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

您好,我正在尝试测试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

地址列表(新城市(名称、代码))


我发现您的
方法中的
循环
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
}