循环分为两部分

时间:2013-03-25 05:41:12

标签: java for-loop dry

你如何在一个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?

好的,到目前为止,没有人回答我的问题。我希望代码能够完成整个第一个循环。然后整个第二个循环。 set indexes方法直到allGenes.addAll在循环中完成for file后才能工作。

3 个答案:

答案 0 :(得分: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);
        }
}

答案 1 :(得分: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条件相同,因此只需将上述语句从第二个for移动到第一个for即可合并两者。 1}}。

答案 2 :(得分:0)

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

之后的第一个循环中