Возможным решением было бы использовать выражение switch-case
следующим образом:
switch(X + "|" + A) {
case x + "|" + a:
...
break;
case y + "|" + a:
break;
case z + "|" + c:
break;
case zz + "|" + d:
break;
}
Я не знаю, считаете ли вы, что этот стиль написания выглядит лучше, но он менее эффективен, чем один, который вы предложили в своем вопросе, так как вы должны объединить строки перед их сравнением.