Я хотел бы отсортировать свой список пользователей в списке каналов IRC, который хранится как JList, используя метод сортировки коллекций. Код ниже выполняет это в некоторой степени:
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 есть три группы пользователей: операторы-операторы, озвученные пользователи и обычные пользователи, и они должны быть организованы в иерархию. Конечно, метод сортировки этого не учитывает. Кроме того, метод сортировки различает строчные и заглавные буквы, а это нежелательно.
Обобщенные вопросы:
Как обрабатывать сортировку различных групп пользователей; могу ли я каким-то образом указать его с помощью метода сортировки коллекций, чтобы он соответствовал иерархии?
Как запретить методу сортировки различать строчные и заглавные буквы?
Мои предлагаемые решения:
- (Неэффективно!) Создайте три списка и добавьте в них соответствующие группы пользователей, отсортируйте, а затем добавьте их в список в удобном порядке.
- преобразовать имена пользователей в нижний регистр (к сожалению).
Какие-либо предложения? Спасибо.