java - 有什么办法可以结合这两种方法吗?

标签 java methods data-structures linked-list overloading

目前我正在创建一种在 java 中反转链表的方法,但它需要两种方法:

public void reverse(){
    reverse(head);
}

private void reverse(Node h){
    if(h.next==null){
        System.out.print(h.data+" ");
        return;
    }

    reverse(h.next);
    System.out.print(h.data+" ");   
}

通过这种方式,我使用 0 个参数调用反向方法,然后调用另一个反向方法。有什么方法可以使它们成为一种方法而不改变我的 LinkedList 类的其他方面吗?

提前致谢!

最佳答案

用一个公共(public)方法调用带有额外参数的私有(private)递归方法是很常见的。查看 Arrays.deepToString(Object[]) 的源代码举个例子。

但是,在您的情况下,最好完全避免递归。递归的一个问题是您只能将方法调用嵌套到一定深度,然后才会出现 StackOverflowError

另一种方法是使用循环。以下将起作用:

public void reverse(){
    List<Node> nodes = new ArrayList<>();
    for (Node n = head; n != null; n = n.next)
        nodes.add(n);
    for (int i = nodes.size() - 1; i >= 0; i--)
        System.out.print(nodes.get(i).data + " ");
}

关于java - 有什么办法可以结合这两种方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33967008/

相关文章:

java - vscode java launch.json 参数

java - 如何创建单例 OkHtpp 类并处理以前的请求

java - 使用Java绘图: Applying Borders/Outlines to Shapes

c# - 创建数据库查询方法

c - AVL树插入函数

c++ - 二叉树中的删除

java - 是否有用于管理 UNIX ACL 的 Java 接口(interface)

c - Max/Min 方法不返回任何内容或返回不正确的数字

java - Eclipse IFile(获取java类方法)

c - 在c中与不同类型的对象堆叠