§12 Подумайте над реализацией интерфейса Comparable.

Презентация:



Advertisements
Похожие презентации
Контейнеры Сортировка Метод sort() Интерфейс Comparable метод int compareTo(Object o) вызов: Arrays.sort(a) Интерфейс Comparator метод int compare(Object.
Advertisements

Нелинейные диофантовы уравнения Методическая разработка учителя Поляковой Е. А.
Java : массивы и коллекции. Массивы Массивы простых типов: int []a = new int[10]; int []b = new int[]{ 0, 1, 2, 3, 4, 5 }; Массивы ссылочных типов (reference.
Логическое программировыание Презентация 5 Списки в Прологе.
АССОЦИАТИВНЫЕ КОЛЛЕКЦИИ Лекция 6 1. Отличие от последовательных 2 В последовательной коллекции каждый элемент ассоциируется с номером, начиная с 0. В.
Тема: Уравнения с одной переменной Выполнила: Цыденова Б. 133 гр. Проверила: Щербакова И.И.
Рассуждение как тип речи В античности существовало специальное упражнение на рассуждение – хрия (доказательство истинности пословицы или известного высказывания)
Ассоциативные списки Поиск данных происходит не по индексу или положению объекта, а по его ассоциативной связи: public interface Map { // Доступ к объектам.
Презентация темы «Решение задач с параметрами» Занятие 3.
Решите неравенство и найдите все его решения, принадлежащие области определения функции.
1 Кубенский А.А. Функциональное программирование. Глава 2. Средства функционального программирования. Еще один пример функциональной программы
Для добавления текста щелкните мышью Структурированные типы данных. Множества 11 класс.
Лекция 2 Наследование Наследование в Java имеет тот же смысл, что и в С++. Однако наследование в Java осуществляется при помощи ключевого слова extends.
Базовые функции Функциональное программирование Григорьева И.В.
Задачи с параметрами.
Основная часть программы на языке Pascal представляет собой последовательность операторов, каждый из которых производит некоторое действие над данными,
Поиск информации Задача поиска: где в заданной совокупности данных находится элемент, обладающий заданным свойством? Большинство задач поиска сводится.
Логика первого порядка ХНУРЭ, кафедра ПО ЭВМ, Тел , Лекции Н.В. Белоус Факультет компьютерных наук Кафедра.
§5. Некоторые теоретико-числовые приложения комбинаторики Определение 1. Натуральное число называется простым, если оно имеет ровно два разных делителя:
Логика первого порядка ХНУРЭ, кафедра ПО ЭВМ, Тел , Лекции Н.В. Белоус Факультет компьютерных наук Кафедра.
Транксрипт:

§12 Подумайте над реализацией интерфейса Comparable

String implements Comparable Comparable:

Правила для compareTo() sgn(x) – ф-ия signum, значения [-1,0,1] Для всех х,у: sgn(x.compareTo(y)) == -sgn(y.compareTo(x)) В частности, если x.compareTo(y) бросает exception y.compareTo(x) должен тоже Транзитивность: x.compareTo(y) > 0 && y.compareTo(z) >0 следовательно x.compareTo(z) > 0

x.compareTo(y) == 0 следовательно sgn(x.compareTo(z)) == sgn(y.compareTo(z)) для любого z Рекоммендуется: x.compareTo(y) == 0 тогда x.equals(y) Сравнивая разные классы следует кидать ClassCastException

Не пытайтесь переиспользовать compareTo() в наследниках объектов где он уже есть. Используйте прием с полем такого типа и методом view() Нарушение согласования с equals() BigDecimal(1.0) && BigDecimal(1.00) не равны при использовании HashSet равны при использовании TreeSet

Отличия от equals: Не надо проверять и приводить аргумент к нужному типу. В противном случае вызов не скомпилируется. Если аргумент null, следует бросить NullPointerException

Сравнивайте объекты используя compareTo на полях рекурсивно

Поля простого типа надо сравнивать используя. Эл-ты с плавающей запятой сравнивайте через compare. Массивы сравнивайте поэлементно. Если класс содержит множество значимых полей, то порядок их сравнения критически важен. –Начинайте с наиболее важных –Если результат сравнения вернул не 0, просто верните его –Если 0, то продолжайте дальше

Улучшенный пример Следите за переполнением!