【发布时间】:2018-10-21 00:43:26
【问题描述】:
我正在尝试迭代一个 ArrayList,并在此循环期间向列表中添加更多元素。我的代码的问题是它不起作用,我的第一个 for 循环只循环一次(起初它 dirs 只包含根目录)。
for (ListIterator<File> iterator = dirs.listIterator(); iterator.hasNext(); ){
for (File file : iterator.next().listFiles()) {
if (checkCondition(file)) {
fileList.add(file);
}
if (file.isDirectory()) {
iterator.add(file);
}
}
}
其中 dirs 是文件的 ArrayList。
我在stackoverflow上阅读了很多答案(实际上这是其中之一),但似乎没有一个有效(显然我犯了一些错误)。
【问题讨论】:
-
您没有发布exception details,也没有说明问题所在。但是,根据您的代码,我建议关闭此问题,因为它可能与 Concurrent Modification exception 重复
-
dirs 有没有可能只有一个元素?
-
是的,在第一次迭代时它只有根目录,然后我想循环遍历它的子目录,所以我尝试将它们添加到列表中。
-
你能检查它是否真的有子目录吗?也许在第二个
if条件中添加打印语句 -
我已经这样做了,是的,它有子目录。
标签: java loops arraylist listiterator