Итак, я не знаю, есть ли элегантное решение, но здесь. Я хочу отсортировать список, но список содержит три типа элементов. Я хочу, чтобы тип A был отсортирован в алфавитном порядке, тип B & C будет внизу и отсортирован в алфавитном порядке (тип B & C будет объединен).Сортировка списка на основе двух условий
Вот мой код:
public int compareTo(Friendship another) {
if(this.getType().equals(TypeA) &&
another.getType().equals(TypeA)){ //if they are both type A, just sort based on user name
return this.getUsername().compareTo(
another.getUsername());
}
else if(this.getType.equals(TypeA)){
return -1;
}
else if(another.getType().equals(TypeA)){
return 1;
}
else{ //this will be hit if they are either Type B or C, then just sort based on username
return this.getUsername().compareTo(
another.getUsername());
}
}
EDIT: извините, я должен был объяснить это намного лучше. Проблема в том, что приведенный выше код не работает. Из того, что я вижу, список, похоже, не упорядочен должным образом.
Список TypeA по какой-то причине упорядочен напротив того, что я хочу (Z -> A). И список TypeB & C сортируется только наполовину. Поэтому я предполагаю, что в моем коде есть ошибка. Дайте мне знать, если вам нужно больше информации
.
EDIT2: Еще несколько тестов на выборках, и похоже, что строки не сортируются вообще. Я сделал как
this.getUsername().compareTo(
another.getUsername());
и
another.getUsername().compareTo(
this.getUsername());
EDIT 3: вы, ребята, были правы. была ошибка в другом месте моего кода (это было несвязано). Извините ... также не знаю, что делать в этом случае. Кому я даю правильный ответ?
Ваша сортировка по алфавиту не будет работать так, как вы указали. String.compareTo (String) использует лексикографическое упорядочение. Возможно, вам придется добавить некоторые соображения для чувствительности к регистру. Извините, если это немного упрощает просмотр. –
@ StephenSouness Я не думаю, что это должно иметь большое значение. он должен просто отсортировать его точно как строки обычно сортируются – Sree
Хорошо. Трудно сказать, не имея никакого контекста, но если вы счастливы, что Зебра покажет перед aardvark (например), тогда это ваше решение. –