Чтобы отсортировать объекты Customer в ArrayList по атрибуту firstName, есть два основных способа:
Comparable прямо в классе CustomercompareTo(), чтобы задать логику сортировки по firstNameCollections.sort() на ArrayListПреимущество: Логика сортировки инкапсулирована в самом классе, задавая порядок сортировки по умолчанию
Comparator для класса Customercompare(), чтобы указать логику сравнения по firstNameCollections.sort(list, comparator)Преимущество: Позволяет использовать несколько стратегий сортировки без изменения оригинального класса; удобно, когда нужна сортировка по разным атрибутам
Comparable: Один естественный порядок на класс; реализуешь один разComparator: Гибкие множественные порядки; реализуешь по мере необходимости// Подход с Comparable
class Customer implements Comparable<Customer> {
public int compareTo(Customer other) {
return this.firstName.compareTo(other.firstName);
}
}
Collections.sort(customerList);
// Подход с Comparator
Comparator<Customer> byFirstName = (c1, c2) ->
c1.firstName.compareTo(c2.firstName);
Collections.sort(customerList, byFirstName);
Выбери Comparable, если нужен один фиксированный порядок сортировки. Выбери Comparator, когда нужна гибкость — сортировка по разным атрибутам или критериям в рамках всего приложения.
При реализации интерфейса Comparable в классе Customer ты должен переопределить метод compareTo(), который возвращает целое число, указывающее на отношение порядка между текущим объектом и другим объектом Customer.
Новый — ещё не проверен сообществом
Вы