尝试创建一个方法,用所选的替换字符串替换链接列表中字符串的所有实例。
但是,我得到的似乎只是检查第三个参数选择的节点,并且不会在列表中重复出现。
public void replace(String firstItem, String replaceItem, Node n){
if (n != null) {
if (n.getItem().equals(firstItem)) {
n.setItem(replaceItem);
n = n.next();
}
}
}
这是主应用程序:
public class ListApp {
public static void main(String[] args){
Node n4 = new Node("green", null);
Node n3 = new Node("red", n4);
Node n2 = new Node("red", n3);
Node n1 = new Node("red", n2);
LinkedList list = new LinkedList(n1);
System.out.println(list);
list.replace("red", "RED", n1); // CALLING THE METHOD
System.out.println(list);
}
}
但是输出结果为:
RED, red, red, green
不确定我需要做什么才能做到这一点,以便它检查每个节点。
如果需要,节点库:
package lib;
public class Node {
private String item;
private Node nextItem;
public Node(String str, Node n){
item = str;
nextItem = n;
}
public String getItem(){
return item;
}
public void setItem(String str){
item = str;
}
public Node next(){
return nextItem;
}
public void setNext(Node n){
nextItem = n;
}
}
任何信息将不胜感激,谢谢!
最佳答案
您的代码的问题是,您没有递归调用该函数。
此外,您可能希望每次都获取下一个节点,而不仅仅是在替换项目时。
因此,您的代码应如下所示:
public void replace(String firstItem, String replaceItem, Node n){
if (n != null) {
if (n.getItem().equals(firstItem)) {
n.setItem(replaceItem);
}
replace (firstItem, replaceItem, n.next());
}
}
关于java - 在Java中递归地替换链表中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47641422/