2

你会如何在一个 for 循环中写这个

for (File file:files)
  {
    if (file.getName().endsWith(".dat"))   {
       Species x = reader.readSpecies(file);
       allSpecies.add(x);
       allGenes.addAll(x.getGenome());
    }
} 
for (File file:files){
     if (file.getName().endsWith(".dat")) {
       Species x = reader.readSpecies(file);
       x.setIndices(allGenes);
     }
}

我希望它通过 for 循环运行一个段而不是下一个使用一个循环。这可能吗?如果不是,我写的代码是否违反了 DRY?

好的,到目前为止,没有人回答过我的问题。我希望代码通过整个第一个循环。然后是整个第二个循环。直到 allGenes.addAll 完成循环中的文件后,设置索引方法才会起作用。

4

3 回答 3

2

它应该是

for (File file:files){
        if (file.getName().endsWith(".dat")){
            Species x = reader.readSpecies(file);                
            allSpecies.add(x);
            allGenes.addAll(x.getGenome());
            x.setIndices(allGenes);
        }
}
于 2013-03-25T05:43:50.383 回答
0
if (file.getName().endsWith(".dat")){
    Species x = reader.readSpecies(file);
    x.setIndices(allGenes); // Take out this line from for loop 2 and put it inside for loop 1
    allSpecies.add(x);
    allGenes.addAll(x.getGenome());
} 

由于if两个for循环中的条件相同,因此您可以合并两者,只需将上述语句从 second 移动for到 first for

于 2013-03-25T05:43:58.040 回答
0

只需将x.setIndices(allGenes)第二个循环中的添加到第一个循环之后allGenes.addAll(x.getGenome())

于 2013-03-25T05:57:14.500 回答