Здравствуйте! Начал изучать java и столкнулся с проблемой компараторов. Нашлись два интерфейса Comparator и Comparable. Как собственно можно их написать и применить для банальной сортировки коллекции в более сложном порядке, чем сортировка по возрастанию. Если возможно, то прошу провести аналогию с компаратором в С++. Спасибо
В гугле достаточно информации и о том, и о другом. Но напишу, мне не жалко.
Для того, чтобы объекты класса стали сравнимы, класс T должен быть Comparable < T > , и в нём нужно описать функцию compareTo(T), возвращающую значение < 0 / 0 / > 0, если первый объект должен считаться меньше / должны считаться равными / второй должен считаться меньше. Компаратор позволяет сравнивать объекты одного типа, даже если они не Comparable. Некоторые структуры (TreeSet, PriorityQueue), а также Collections.sort позволяют задавать нужный компаратор для сравнения объектов. Нужно помнить, что TreeSet не добавляет одинаковые элементы повторно (а одинаковость определяется compareTo или переданным компаратором), и писать функцию сравнения аккуратно.
Небольшой пример использования в первой правке.