java树不用递归_有效地在Java中生成“资源管理器树”(不使用递归)

我有一个可能与语言无关的问题,但对于这个特定的实现,我使用的是Java.列出目录中的文件夹是可能且相对简单的 – 使用如下函数:

private DefaultMutableTreeNode GenerateFSTree(File f)

{

int i = 0;

File[] Children = f.listFiles();

DefaultMutableTreeNode x = new DefaultMutableTreeNode(f.getName());

if ( Children != null )

{

for ( i = 0; i < Children.length; i++ )

{

File f_cur = Children[i];

if (

f_cur.isDirectory() &&

( this.DisplayHidden || !f_cur.isHidden() )

)

{

x.add(GenerateFSTree(f_cur));

}

}

}

return x;

}

正如您所看到的,这会大量使用递归来评估文件系统,最终得到的是DefaultMutableTreeNode项的树.

现在我的问题是 – 有更快的方法吗?必须有,因为这很慢.尝试在/上执行此操作,它需要永远.然而,如果我使用Nautilus或内置的Java文件选择对话框,树会立即渲染.

所以我的问题是 – 我怎样才能加快速度呢?

谢谢

解决方法:

标签:java,filesystems,recursion

来源: https://codeday.me/bug/20190606/1189968.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值