java – 不使用递归遍历目录?
|
问题
我在做什么 现在我正在做最愚蠢的事情: import java.io.File;
public class Eseguibile {
private static void displayIt(File node){
System.out.println(node.getAbsoluteFile());
if(node.isDirectory()){
String[] subNote = node.list();
for(String filename : subNote){
displayIt(new File(node,filename));
}
}
}
public static void main(String[] args){
System.out.println("ciao");
displayIt( new File("/home/dierre/") );
}
}
我不需要构建树,因为我只需要文件列表,所以我想也许有一种更有效的方法. 我正在阅读有关TreeModel的内容,但据我了解,它只是实现Jtree的界面. 解决方法
递归既不“愚蠢”,也不一定效率低下.实际上,在这种特殊情况下,递归解决方案可能比非递归解决方案更有效.当然,递归解决方案比替代方案更容易编码和理解. 递归的唯一潜在问题是,如果目录树在病理学上很深,你可能会溢出堆栈. 如果你真的想避免递归,那么自然的方法就是使用“文件列表堆栈”数据结构.您将在每个地方递归,将包含当前目录(剩余)File对象的列表推送到堆栈,读取新目录并开始处理它们.然后,当您完成后,弹出堆栈并继续父目录.这将为您提供深度优先遍历.如果要进行广度优先遍历,请使用“文件队列”数据结构而不是堆栈. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
