首页 > 解决方案 > 如何删除 Java 中的重复条件检查?

问题描述

var Task= Condition1
            ? (CommonCondition ? doThis1 : doThis2)
            : Condition2? (CommonCondition ? doThis3  : doThis4 )
                    : (CommonCondition ? doThis5   : doThis6);

如何避免重复检查CommonCondition上述语句中的值?

标签: javaduplicates

解决方案


  1. 检查条件的顺序可以更改,以便CommonCondition检查一次,但其他条件必须在每个分支中检查两次:
var Task= CommonCondition 
    ? (Condition1 ? doThis1 : Condition2 : doThis3 : doThis5) 
    : (Condition1 ? doThis2 : Condition2 : doThis4 : doThis6);
  1. 实现一个二维数组Task或可能Supplier<Task>用于CommonCondition定义行索引,以及定义列索引的其他条件:
Task[][] arr = {
    {doThis1, doThis3, doThis5},
    {doThis2, doThis4, doThis6}
};
int row = CommonCondition ? 0 : 1;
int col = Condition1 ? 0 : Condition2 ? 1 : 2;
var Task = arr[row][col];
  1. 类似地,可以使用一个简单的 s 数组Task,那么应该使用条件来计算索引:
Task[] arr = { doThis1, doThis2, doThis3, doThis4, doThis5, doThis6 };

int i = Condition1 ? 0 : Condition2 ? 1 : 2;
int j = CommonCondition ? 0 : 1;

var Task = arr[2 * i + j];

推荐阅读