Теоретически, с 3 логическими массивами вам нужно сделать:
firstState[n] = false;
secondState[n] = true;
thirdState[n] = false;
каждый раз, когда вы хотите изменить состояние n-го элемента. Здесь вы можете видеть 3 взятия элемента по индексным операциям и 3 операции присваивания.
С 1-байтовым массивом вам понадобится:
elements[n] = 1;
Это более читабельно и в 3 раза быстрее. И еще одно преимущество этого решения в том, что вы можете легко добавлять столько новых состояний, сколько захотите (когда с логическими массивами вам нужно будет вводить новые массивы).
Но я не думаю, что вы когда-нибудь увидите разницу в производительности.
UPD : на самом деле я бы сделал это более Java-способом (не смотря на то, что вы не находите простых путей) и использовал бы массив enums . Это сделает это намного более понятным и даст вам некоторую гибкость (возможно, в будущем вы решите, что упс не так уж и плохо):
enum ElementState {
FIRST, SECOND, THIRD;
}
ElementState[] elementStates = new ElementState[N];
...
elementStates[i] = ElementState.FIRST;