Java 如何将换行符添加到多维树的toString中

Java 如何将换行符添加到多维树的toString中,java,algorithm,Java,Algorithm,有这样一种结构: TreeNode [key=root]--->TreeNode [key=child1]--->TreeNode [key=grandchild] --->TreeNode [key=child2] 公共类树节点{ 私钥; 私人名单儿童; .... } 我重写了toString()函数 然后我测试结果: public static void main(String[] args) { TreeNode node

有这样一种结构:

TreeNode [key=root]--->TreeNode [key=child1]--->TreeNode [key=grandchild]
                   --->TreeNode [key=child2]
公共类树节点{
私钥;
私人名单儿童;
....
}

我重写了toString()函数

然后我测试结果:

public static void main(String[] args) {
    TreeNode node = new TreeNode();
    node.setKey("root");
    List<TreeNode> children = new ArrayList<TreeNode>();
    TreeNode child1 = new TreeNode();
    child1.setKey("child1");
    TreeNode child2 = new TreeNode();
    child2.setKey("child2");
    children.add(child1);
    children.add(child2);
    List<TreeNode> grandchildren = new ArrayList<TreeNode>();
    TreeNode grandchild = new TreeNode();
    grandchild.setKey("grandchild");
    grandchildren.add(grandchild);

    node.setChildren(children);
    child1.setChildren(grandchildren);

    System.out.println(node);

}
如何在输出中添加换行符,如下所示:

TreeNode [key=root]--->TreeNode [key=child1]--->TreeNode [key=grandchild]
                   --->TreeNode [key=child2]
但是现在孩子1显示了两次,结果中没有添加换行符

================================ 我改变了功能:

@Override
public String toString() {
    String treeStructure = "TreeNode [key=" + key +  "]";
    if(children!=null){
        for(TreeNode child:children){
        treeStructure = treeStructure+"\n"+"-->"+children.toString()+"\n";
        }
    }
    return treeStructure;
}
那么输出是:

TreeNode [key=root]--->[TreeNode [key=child1]--->[TreeNode [key=grandchild]]/n, TreeNode [key=child2]]/n--->[TreeNode [key=child1]--->[TreeNode [key=grandchild]]/n, TreeNode [key=child2]]/n
TreeNode [key=root]
--->[TreeNode [key=child1]
--->[TreeNode [key=grandchild]]
, TreeNode [key=child2]]

--->[TreeNode [key=child1]
--->[TreeNode [key=grandchild]]
, TreeNode [key=child2]]

为什么孩子重复两次,以及“from”在哪里?

使用
\n
而不是
/n

treeStructure = treeStructure + "--- >" + children.toString() + "\n";

使用
\n
而不是
/n

treeStructure = treeStructure + "--- >" + children.toString() + "\n";

尝试使用\r\n或与BufferedWriter一起使用:BufferedWriter.newLine()

之所以编写,是因为它看起来像一个数组。 同样的原因也会重复出现在child1中。
更改:

treeStructure+"\n"+"-->"+children.toString()+"\n"
致:


尝试使用\r\n或与BufferedWriter一起使用:BufferedWriter.newLine()

之所以编写,是因为它看起来像一个数组。 同样的原因也会重复出现在child1中。
更改:

treeStructure+"\n"+"-->"+children.toString()+"\n"
致:

不要这样做

换行符不属于toString()方法。当有人决定创建这些对象的列表或地图时,它们会造成相当大的混乱。toString()不应是预打印。为此,请使用特定的方法,以使其具有可靠的输出。toString()没有生成格式化输出的合同。

不要这样做


换行符不属于toString()方法。当有人决定创建这些对象的列表或地图时,它们会造成相当大的混乱。toString()不应是预打印。为此,请使用特定的方法,以使其具有可靠的输出。toString()没有生成格式化输出的合同。

这是因为您没有覆盖的列表的
toString()
实现。这是因为您没有覆盖的列表的
toString()
实现。在Java中,换行符是“\n”不是“/n”在Java中,换行符是“\n”而不是“/n”。请参见