Я хотел бы отсортировать свой список пользователей в канале IRC, который хранится в виде JList, с использованием метода сортировки Collections. Код ниже выполняет это, в некоторой степени:
users
- это JList, содержащий пользователей.
userList
- это промежуточная структура данных (LinkedList), которая используется для сортировки списка с коллекциями.
// Iterate through the JList and add the users to a LinkedList of strings.
for(Object userName : users.toArray())
userList.add(userName.toString());
// Sort
Collections.sort(userList);
// Clear the user list (removes all users).
users.clear();
// Put the sorted userList in users again.
while(iterator.hasNext() && i < userList.size())
users.addElement(userList(get(i++));
Проблема состоит в том, что IRC channelList имеет три группы пользователей: OP, голосовые пользователи и обычные пользователи, и они должны быть организованы в иерархию. Конечно, метод сортировки не принимает это во внимание. Кроме того, метод сортировки различает строчные и заглавные буквы, и это нежелательно.
Всего вопросов:
Как обрабатывать сортировку по группам пользователей; Могу ли я указать его с помощью метода сортировки Коллекций, чтобы он соответствовал иерархии?
Как помешать методу сортировки различать строчные и заглавные буквы?
Мои предлагаемые решения:
- (Неэффективно!) Создайте три списка и добавьте в них соответствующие группы пользователей, отсортируйте, а затем добавьте их в список в удобном порядке.
- преобразовать имена пользователей в строчные (неудачно).
Есть предложения? Спасибо.