Java:如何根据条件从数组中删除对象?

mar*_*osh 10 java iteration

我有一个对象数组(文件列表).如何遍历此数组并删除一些对象(使用Java) - 具体取决于条件?

File[] files = file.listFiles();
for(File f: files) {
   if(someCondition) {
       // remove
   }
}
Run Code Online (Sandbox Code Playgroud)

Jea*_*art 23

我认为解决问题的最佳Java方法是将数组转换为列表并使用允许删除对象的迭代器:

List<File> files = new ArrayList<File>(Arrays.asList(file.listFiles()));
Iterator<File> iterator = files.iterator();
while(iterator.hasNext()){
    File currentFile = iterator.next();
    if(someCondition){
        iterator.remove();
    }
    // other operations
}
Run Code Online (Sandbox Code Playgroud)

如果需要,您甚至可以将其再次转换为数组 - 尽管处理列表可能更方便......:

File[] filesArray = files.toArray();
Run Code Online (Sandbox Code Playgroud)

  • 您处于正确的轨道上,但是iterator.remove()将失败并返回Arrays.asList()返回的数组支持列表.你需要做的更麻烦:`List <File> files = new ArrayList <File>(Arrays.asList(file.listFiles()));`如果你想添加或删除项目. (5认同)