Ну, во-первых, мне нравится ваша идея хранить всю цепочку в массиве. Я думаю, что это будет хорошо работать.
Но я согласен с вами, что "вложенный" массив,
{ {'a', 1}, {'a', 2}, ... }
вероятно будет немного раздражать. Задумывались ли вы сделать класс, как
class Elem {
String symbol;
int subscript;
}
Затем вы можете написать компаратор, чтобы сказать, меньше ли один элемент, чем другой:
Comparator<Elem> comp = new Comparator<Elem>() {
public int compareTo(Elem e1, Elem e2) {
// return -1 if e1<e2, +1 if e2<e1, 0 otherwise
}
public boolean equals(Elem e1, Elem e2) {
// ...
}
};
Я думаю, что это может облегчить вашу жизнь, потому что тогда один элемент ощущается больше как отдельный объект.