我试图通过将其真实名称作为children.get(0).children.get(0).data
返回其数据为“directory”的节点的字符串列表。到目前为止,当我浏览树时,它可以找到节点并添加我正在寻找的数据,但是当我在List中添加这些字符串并将它们放入System.out.println列表时,列表会发生变化。它可以重置,删除字符串等。
在return语句之前,我打印出列表。它不是归还的。
!!! beforeoutput [图片,图片2.0,图片,图片2.0] //打印列表
!!! beforeoutput [电影和图片,电影,图片] //打印列表
getdirectories [电影和图片,电影,图片] //实际输出
有人告诉我在全球范围内定义列表,我做了,实际上没有任何事情发生。
我想我要求的是如何通过树正确查询。我知道它是递归的,但是当在列表中添加值时,它会混淆列表。
我的方法代码+控制台+示例树在此处发布:http://pastebin.com/9nXvcCNS
答案 0 :(得分:0)
我不明白你在这里想要做什么,因为你的代码很麻烦和挑剔。您需要了解当从递归函数调用返回值时,它会将其返回到先前调用它的位置。
如果你有这样的结构,
a
| - b
| - c
其中每个项目都表示为
class Node{
String data;
Node nextNode;
}
并希望您的列表包含字符串“a”,“b”和“c”,您必须写下这样的内容:
List<String> allDirectories = new ArrayList<String>();
getDirectories(allDirectories);
private void getDirectories(List<String> allDirectories) {
//somehow get next node
Node node = getNextNode();
//if next node is null, or terminating node: return
if (node == null) return;
allDirectories.add(node.getData());
getDirectories(allDirectories);
}
换句话说,尝试将列表作为参数传递给方法,并且不要在函数调用开始时重置它。