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

标签 java refactoring iteration

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

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;
}

因为我知道迭代前 accountType 的值,所以我不希望对列表中的每个条目进行此检查,因为如果实例的 reportJDOList 的大小为 10000,它将导致大量检查。我们如何避免这件事发生?提前致谢:)

最佳答案

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

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

显然,您可以通过以下任一方法改进您的设计

  1. 将循环分成两种不同的方法
  2. 使用命令模式,即在不同的命令中实现循环体并执行循环。
  3. 使用 Guava 的函数(只是对#2 的改进)
  4. 使用 Java 8 流。

关于java - 如何从循环中删除 if else 条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34016883/

相关文章:

java - Spring Boot 请求头返回空值

java - Canvas 字符串点击检测

java - ClassCastException :com. google.appengine.tools.development.ApiProxyLocalImpl 无法转换为 com.google.appengine.tools.development.ApiProxyLocal

java - 无法访问未找到 org.apache.commons.pool2.impl.GenericObjectPoolConfig 的 org.apache.commons.pool2.impl.GenericObjectPoolConfig 类文件

ruby - 如何重构这个简单的 Ruby 算法

python - 提高非常大的数据帧上的迭代性能

java - Eclipse:将导入添加到一堆类中

java - 代码异味部分模拟?

python - 如何在 Python 中使用行和列迭代来填充矩阵

for-loop - 如何修改 slice 中结构的字段?