java非递归_Java非递归文件系统走路
我需要創建一個使用非遞歸遍歷文件系統的應用程序,并打印出一定深度的文件.
是)我有的:
public void putFileToQueue() throws IOException, InterruptedException {
File root = new File(rootPath).getAbsoluteFile();
checkFile(root, depth);
Queue queue = new ArrayDeque();
DepthControl e = new DepthControl(0, root);
do {
root = e.getFileName();
if (root.isDirectory()) {
File[] files = root.listFiles();
if (files != null)
for (File file : files) {
if (e.getDepth() + 1 <= depth && file.isDirectory()) {
queue.offer(new DepthControl(e.getDepth() + 1,file));
}
if (file.getName().contains(mask)) {
if (e.getDepth() == depth) {
System.out.println(Thread.currentThread().getName()
+ " putting in queue: "
+ file.getAbsolutePath());
}
}
}
}
e = queue.poll();
} while (e != null);
}
和助手班
public class DepthControl {
private int depth;
private File file;
public DepthControl(int depth, File file) {
this.depth = depth;
this.file = file;
}
public File getFileName() {
return file;
}
public int getDepth() {
return depth;
}
}
我收到了答案,由于廣度優先搜索(希望正確翻譯),該程序使用額外的內存.我有O(k ^ n),其中k – 子目錄的平均數量,n – 深度.這個程序可以用O(k * n)輕松完成.請幫我修改算法.
總結
以上是生活随笔為你收集整理的java非递归_Java非递归文件系统走路的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言优先队列作用,C语言实现优先队列(
- 下一篇: case是java关键字吗_Java关键