#java #collections #comparator #comparable
Вопрос:
Компаратор используется, когда мы хотим добиться индивидуального порядка сортировки, но это также возможно при сопоставлении. Так почему же мы используем компаратор?
Комментарии:
1. «это также возможно при сопоставимых» — не совсем так. Если у вас есть (скажем)
Person
класс с датой рождения и именем, и иногда вы хотите отсортировать список людей по имени, а иногда по возрасту, как бы вы это сделалиComparable
?
Ответ №1:
Так почему же мы используем
Comparator
?
Некоторые из причин включают:
- Потому
Comparable
что позволяет определить только один порядок сортировки. Некоторые приложения требуют более одного порядка сортировки; например, порядок имен в зависимости от возраста или порядок имен в зависимости от обратного порядка имен. - Потому что вы, возможно, не сможете настроить тип. Например, вы не можете настроить порядок сортировки
String
String
класса «потомуfinal
что». - Потому что может быть неуместно настраивать порядок сортировки для класса. Например, для класса может вообще не иметь смысла иметь какой-либо естественный порядок.
Во всяком случае, Comparator
предоставляет альтернативу Comparable
. Вам не нужно использовать его, если вы этого не хотите.