java - 在Java中递归地替换链表中的字符串

标签 java recursion replace linked-list

尝试创建一个方法,用所选的替换字符串替换链接列表中字符串的所有实例。

但是,我得到的似乎只是检查第三个参数选择的节点,并且不会在列表中重复出现。

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/

相关文章:

c# - 高效搜索树结构中的所有节点

recursion - 提前编译时 Clojure fn 名称泄漏到其范围之外

javascript - Jquery替换特定字符组合

html - 正则表达式替换 HTML 页面内的内容

powershell - 替换包含 & 符号的 XML 节点中的文本

java - 调用 executeUpdate 时 UCanAccess/Jackcess 异常禁用我的 Logger 输出

java - 将数组列表写入文件

java - 如何在 J2EE 中进行动态 URL 重写

java - 组合 n 中大小为 k 的唯一组以满足特定要求的最佳方法

eclipse - 如何确定我的 Java 应用程序的最低 JRE 版本和系统要求