如何从循环中删除if else条件?

Kar*_*mar 1 java iteration refactoring

我有一个类似于下面的代码片段,

public ArrayList getReport(reportJDOList,accountType)
{
    String abc = "";

    for(ReportJDO reportJDO : reportJDOList)
    {
        if(accountType.equals("something")
           abc = reportJDO.getThis();
        else
           abc = reportJDO.getThat();

        //somecode goes here
    }

    returning List;
}
Run Code Online (Sandbox Code Playgroud)

正如我在迭代之前知道accountType的值,我不希望对列表中的每个条目进行此检查,因为如果一个实例的reportJDOList的大小为10000,它将导致大量检查.我们如何消除这件事?提前致谢 :)

Ale*_*exR 5

你确实可以执行一次检查并实现2个循环:

if(accountType.equals("something") {
   for(ReportJDO reportJDO : reportJDOList) {
       abc = reportJDO.getThis();
   }
} else {
   for(ReportJDO reportJDO : reportJDOList) {
       abc = reportJDO.getThat();
   }
}
Run Code Online (Sandbox Code Playgroud)

显然,您可以通过任何一种方式改进您的设计

  1. 将循环分成2种不同的方法
  2. 使用命令模式,即在不同的命令中实现循环体并执行循环.
  3. 使用番石榴的功能(它只是#2的改进)
  4. 使用java 8流.