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”。请参见