Это зависит от того, сколько разных методов вы вызываете.Если оно меньше (я предполагаю здесь) 20, я бы использовал простые тесты с битовой маской для int
(что составляет 4 байта - используйте младшие 3) с if()
.
Например:
public static void callMethod(byte[] bytes) {
int bits = (bytes[2] & 0xFF) << 16 +
(bytes[1] & 0xFF) << 8 +
(bytes[0] & 0xFF);
if ((bits & 1) > 0) {
methodForBit0Set(bytes);
}
if ((bits & 2) > 0) {
methodForBit1Set(bytes);
}
if ((bits & 4) > 0) {
methodForBit3Set(bytes);
}
// etc
}
Если вы вызываете только один метод, а затем останавливаетесь, вы можете использовать elses
между ifs
и, возможно, захотите упорядочить тесты в порядке наиболее частосначала ожидается.
Использование хэш-карты не будет , что намного быстрее, чем эти чрезвычайно быстрые операции, ИМХО, даже если у вас много тестов, и это легче читать, отлаживать и поддерживать.