如何将新行添加到多树
的的toString有这样的结构:如何将新行添加到多树
public class TreeNode {
private String key;
private List<TreeNode> children;
....
}
我重写ToString()函数
@Override
public String toString() {
String treeStructure = "TreeNode [key=" + key + "]";
if(children!=null){
for(TreeNode child:children){
treeStructure = treeStructure+"--- >"+children.toString()+"/n";
}
}
return treeStructure;
}
然后我测试结果:
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]]/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]
但现在的child1显示出两次,不加入新行结果。
================================ 我改变了功能:
@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]]
, TreeNode [key=child2]]
--->[TreeNode [key=child1]
--->[TreeNode [key=grandchild]]
, TreeNode [key=child2]]
为什么孩子重复两次,“?”从哪里来?
使用\n
而不是/n
treeStructure = treeStructure + "--- >" + children.toString() + "\n";
谢谢,但输出有“,” –
这是因为您没有覆盖列表
尝试使用\ r \ n或使用的BufferedWriter:BufferedWriter.newLine()
的,写的,因为它被认为是像一个数组。 同样的原因是重复child1。
变化:
treeStructure+"\n"+"-->"+children.toString()+"\n"
到:
treeStructure+"-->"+child.toString()+"\n"
不要这样做。
换行符不属于toString()方法。当有人决定创建这些对象的列表或地图时,它们会造成相当大的混乱。 toString()不应该是一个漂亮的打印。为此目的使用特定的方法,以便它具有可靠的输出。 toString()没有这样的合约来产生格式化输出。
在Java中,换行符是“\ n”,而不是“/ n”。 –
看到[我的答案#打印](http://stackoverflow.com/questions/10497119/how-to-save-the-path-of-search-result-in-java-multi-tree/10499759#10499759) – BLUEPIXY