- Сравнительный метод исследования. Метод сравнительного анализа
- Сравнение как способ познания
- Понятие и категории метода сравнительного анализа
- Механизм сравнительного анализа
- Этапы сравнительного анализа и прогнозирования
- Правила осуществления сравнительного анализа
- Виды сравнительных исследований
- Плюсы и минусы сравнительного метода
- Примеры использования метода сравнительного анализа
- Сравнение объектов в Java
- 1. введение
- 2.1. Примитивы
- 2.2. Объекты
- 3. Метод Object#equals
- 4. Объекты#равны Статическому методу
- 5. Сопоставимый интерфейс
- 6. Интерфейс компаратора
- 7. Apache Commons
- 7.1. Метод ObjectUtils#NotEqual
- 7.2. Метод сравнения объектов#
- 8. Гуава
- 8.1. Объекты#равный метод
- 8.2. Методы сравнения
- 8.3. Класс сравнительной цепи
- 9. Заключение
Сравнительный метод исследования. Метод сравнительного анализа
Сравнительный метод – один из самых распространенных в разных науках. Во многих сферах человеческой деятельности возникает необходимость оптимального выбора. При этом учитываются все характеристики изучаемых объектов, а также их сопоставление по нужным критериям.
Сравнение как способ познания
Сопоставление является одним из основных методов познания окружающей действительности. Основа данного способа достаточно проста: определение и сопоставление отдельных явлений социального, экономического, политического или другого характера с целью обнаружения отличительных сходств и различий.
На основе сопоставления делается вывод обоснованного или предположительного характера об однородности явлений, аналогичности их содержания, общей направленности и т. д. Это позволяет использовать данные об одном объекте при изучении другого. Если же в ходе осуществления исследования были обнаружены некоторые расхождения, то это позволяет указывать на особенность, специфику и уникальность одного явления или объекта по отношению к другому.
Понятие и категории метода сравнительного анализа
Метод сравнительного анализа берет свое начало от такого общенаучного метода, как аналогия. Однако в отличие от последнего, сравнение предвидит использование элементов других методов, среди которых анализ, методы мышления, моделирование, синтез, индукция, дедукция и др. Основной целью сравнения является получение новых фактов не только от различных свойств сравниваемых объектов или явлений, но также анализ их всевозможных взаимосвязей. На основании этого можно составить общую тенденцию их последующего функционирования и развития.
Методы сравнительного подхода приводят к тому, что могут быть пересмотрены уже сложившиеся взгляды на те или иные явления и факты. При сравнении также могут быть открыты особенности, которые специфичны для конкретного объекта или явления, однако ранее не были известны исследователям. Таким образом, сравнение способствует более глубокому изучению и познанию объектов и явлений, а также поиску их отличительных особенностей и различий на разных уровнях исследования.
Механизм сравнительного анализа
Сравнительный метод исследования имеет свой собственный механизм, который включает в себе следующие компоненты:
- Общенаучные методы. Сюда входят: аналогия, индукция и дедукция, анализ и синтез и др.
- Логический аппарат. Обширная система категорий, которая используется в операциях по сравнению и анализу. Каждый объект или явление обладает своей собственной системой категорий.
Особенного внимания также заслуживает такая вариация метода сравнения, как сегментация. Ее суть состоит в том, что информация об объекте или явлении делится на отдельные части – сегменты, которые впоследствии подвергаются исследованиям. При этом сравнение может быть осуществлено согласно разным критериям, в частности, достаточно часто используется историко-сравнительный метод, где объект исследуется не только в сравнении с другими объектами, но также в сравнении с самим собой на разных временных этапах.
Сегментация как один из методов сравнительного анализа предполагает исследование не только характеристик отдельных элементов конкретного объекта или явления, но также характера и тенденции его функционирования и развития в рамках целого.
Этапы сравнительного анализа и прогнозирования
Сравнительный метод оценки объектов и явлений предвидит осуществление исследования на нескольких уровнях:
- Сбор и обработка всей полученной информации. При этом все данные должны быть объективными, точными и доказуемыми.
- Систематизация информации. Все данные нужно распределить на разные категории и придать собранному материалу структурный вид.
- Толкование полученных данных. На основании анализа и сопоставления информации делаются конкретные выводы.
При правильном выполнении указанных этапов исследователь может формулировать обоснований прогноз. Самым простым способом прогнозирования является непосредственное сопоставление информации об объекте или явлении на разных уровнях, например в разных регионах, странах и т. д. Второй способ прогнозирования предвидит выдвигание конкретных гипотез, подкрепленных реальными фактами.
Правила осуществления сравнительного анализа
Сравнительный метод исследования будет эффективным только в том случае, если соблюдены все правила его осуществления:
- Осуществление сравнения на разных уровнях с использованием аналогии, системно-исторического анализа и логики.
- Правильный выбор объектов для осуществления процесса сравнения.
- Конкретная постановка целей.
- Метод сравнительного анализа должен быть осуществлен с применением конкретных критериев.
- Четкое определение признаков сравниваемых объектов и явлений.
- Обработка результатов сравнения и анализ возможности их применения в практике.
Все данные, полученные в процессе исследования, долны быть четкими, однозначными и доказуемыми.
Виды сравнительных исследований
Сравнительный метод имеет свою типологию. В науке выделяют следующие виды исследований:
- Согласно объему исследования: макро- и микросравнение.
- Согласно целям, выделяют практическое (или функциональное) и теоретическое (или научное) исследование.
- Согласно уровню, исследование может быть межсистемным, внутрисистемным, внутринациональным, историческим, межотраслевым и т. д.
Кроме того, выделяют также синхронное и асинхронное сравнение. В первом случае речь идет о параллельном и одновременном сравнении, а во втором случае сравнительный метод может быть применен по отношению к объектам, которые находятся в разных временных отрезках.
Плюсы и минусы сравнительного метода
Сравнительный подход имеет ряд плюсов и минусов, которые исследователь должен учитывать в своей работе. Что касается положительных сторон, то они следующие:
- Метод позволяет отразить актуальную и реальную ситуацию по отношению к исследуемому объекту или явлению.
- Все данные статистически обоснованы.
- В процессе исследования можно вносить корректировку сравниваемых явлений или объектов.
- При наличии большого количества информации метод очень прост в осуществлении и дает надежные и достоверные результаты.
Метод имеет и свои недостатки:
- На момент толкования результатов исследования данные могут устареть.
- Точность полученных данных зависит от стабильности исследуемого объекта.
- Для достоверных и точных данных нужно большое количество информации.
Соотношение положительных и негативных сторон метода определяет эффективность его применения в каждом конкретном случае.
Примеры использования метода сравнительного анализа
Особенности метода сравнения позволяют использовать его в самых разных сферах, таких как:
- Биология и анатомия.
- Языкознание, в частности сравнительное языкознание.
- Литературоведение и мифология.
- Сравнительная политология.
- Экономические науки.
- Юриспруденция и правоведение.
- Психология.
- Социологические науки.
- Религиоведение.
- Философия и др.
Сравнительный метод обладает рядом особенностей, позволяющих эффективно его использовать в самых разных науках. Метод имеет свою классификацию, типологию, а также правила и особенности исследования на разных этапах. Выбор данного метода определяется наличием нужного количества информации и подбором оптимальных критериев.
Источник
Сравнение объектов в Java
Узнайте о сравнении объектов в Java.
Автор: François Dupire
Дата записи
1. введение
Сравнение объектов является важной особенностью объектно-ориентированных языков программирования.
В этом уроке мы рассмотрим некоторые функции языка Java, которые позволяют нам сравнивать объекты. Кроме того, мы рассмотрим такие функции во внешних библиотеках.
Давайте начнем с операторов == и != , которые могут определить, являются ли два объекта Java одинаковыми или нет, соответственно.
2.1. Примитивы
Для примитивных типов быть одинаковым означает иметь равные значения:
Благодаря автоматической распаковке это также работает при сравнении примитивного значения с его аналогом типа оболочки :
Если два целых числа имеют разные значения, оператор == вернет false , а оператор != вернет true .
2.2. Объекты
Допустим, мы хотим сравнить два типа Integer wrapper с одним и тем же значением:
При сравнении двух объектов значение этих объектов не равно 1. Скорее, это их адреса памяти в стеке , которые отличаются, поскольку оба объекта были созданы с использованием оператора new . Если бы мы назначили a |//b , то у нас был бы другой результат:
Теперь давайте посмотрим, что происходит, когда мы используем Integer#значение метода factory:
В этом случае они считаются одинаковыми. Это связано с тем, что метод valueOf() хранит Целое число в кэше, чтобы избежать создания слишком большого количества объектов-оболочек с одним и тем же значением. Поэтому метод возвращает один и тот же экземпляр Integer для обоих вызовов.
Java также делает это для String :
Однако, если бы они были созданы с помощью оператора new , то они не были бы одинаковыми.
Наконец, две null ссылки считаются одинаковыми, в то время как любой объект, не являющийся null , будет считаться отличным от null :
Конечно, поведение операторов равенства может быть ограничивающим. Что делать, если мы хотим сравнить два объекта, сопоставленные с разными адресами, и все же считать их равными на основе их внутренних состояний? Мы увидим это в следующих разделах.
3. Метод Object#equals
Теперь давайте поговорим о более широкой концепции равенства с помощью метода equals () .
Этот метод определен в классе Object , так что каждый объект Java наследует его. По умолчанию его реализация сравнивает адреса памяти объектов, поэтому он работает так же, как оператор == //. Однако мы можем переопределить этот метод, чтобы определить, что означает равенство для наших объектов.
Во-первых, давайте посмотрим, как он ведет себя для существующих объектов, таких как Integer :
Метод по-прежнему возвращает true , когда оба объекта одинаковы.
Следует отметить, что мы можем передать объект null в качестве аргумента метода, но, конечно, не в качестве объекта, на котором мы вызываем метод.
Мы можем использовать метод equals() с нашим собственным объектом. Допустим, у нас есть Человек класс:
Мы можем переопределить метод equals() для этого класса, чтобы мы могли сравнить два Person s на основе их внутренних данных:
Для получения дополнительной информации см. статья на эту тему .
4. Объекты#равны Статическому методу
Теперь давайте рассмотрим Objects#equals статический метод . Ранее мы упоминали, что мы не можем использовать null в качестве значения первого объекта, иначе возникнет исключение NullPointerException .
То равняется() метод Объекты вспомогательный класс решает эти проблемы. Он принимает два аргумента и сравнивает их, также обрабатывая нулевой ценности.
Давайте снова сравним Человека объекты с:
Как мы уже говорили, метод обрабатывает значения null . Поэтому, если оба аргумента null , он вернет true , а если только один из них null , он вернет false .
Это может быть очень удобно. Допустим, мы хотим добавить необязательную дату рождения в наш Человек класс:
Затем нам придется обновить наш метод equals () , но с обработкой null|/. Мы могли бы сделать это, добавив это условие в наш метод equals() :
Однако, если мы добавим в наш класс много полей, допускающих обнуление, это может стать действительно грязным. Использование метода объекта#equals в нашей реализации equals() намного чище и улучшает читаемость:
5. Сопоставимый интерфейс
Логика сравнения также может использоваться для размещения объектов в определенном порядке. | Сопоставимый интерфейс позволяет нам определять порядок между объектами , определяя, является ли объект больше, равен или меньше другого.
Интерфейс Comparable является универсальным и имеет только один метод, compareTo() , который принимает аргумент универсального типа и возвращает int . Возвращаемое значение отрицательно, если this меньше аргумента, 0, если они равны, и положительно в противном случае.
Допустим, в нашем классе Person мы хотим сравнить объекты Person по их фамилии:
Метод compareTo() вернет отрицательный int , если вызывается с Человеком , имеющим большую фамилию, чем this , ноль, если та же фамилия, и положительный в противном случае.
Для получения дополнительной информации ознакомьтесь с нашим статья на эту тему .
6. Интерфейс компаратора
Comparator interface является универсальным и имеет метод compare , который принимает два аргумента этого универсального типа и возвращает целое число . Мы уже видели этот шаблон ранее с интерфейсом Comparable .
Компаратор аналогичен; однако он отделен от определения класса. Поэтому мы можем определить столько Компараторов , сколько нам нужно для класса, где мы можем предоставить только одну Сопоставимую реализацию.
Давайте представим, что у нас есть веб-страница, отображающая людей в виде таблицы, и мы хотим предложить пользователю возможность сортировать их по именам, а не по фамилиям. Это невозможно с Comparable , если мы также хотим сохранить нашу текущую реализацию, но мы могли бы реализовать наши собственные Компараторы .
Давайте создадим Person Компаратор , который будет сравнивать их только по именам:
Давайте теперь отсортируем Список людей, использующих этот Компаратор :
В интерфейсе Comparator есть другие методы, которые мы можем использовать в нашей реализации compareTo() :
В этом случае мы сначала сравниваем фамилии, а затем имена. Затем мы сравниваем даты рождения, но поскольку они обнуляются, мы должны сказать как с этим справиться поэтому мы даем второй аргумент, говорящий, что их следует сравнивать в соответствии с их естественным порядком, но с нулевыми значениями, идущими последними.
7. Apache Commons
Теперь давайте взглянем на библиотеку Apache Commons . Прежде всего, давайте импортируем зависимость Maven :
7.1. Метод ObjectUtils#NotEqual
Во-первых, давайте поговорим о методе ObjectUtils#NotEqual . Требуется два аргумента Object , чтобы определить, не равны ли они, в соответствии с их собственной реализацией метода equals () . Он также обрабатывает значения null .
Давайте повторно используем наши примеры String :
Следует отметить, что ObjectUtils имеет метод equals () . Однако это устарело с Java 7, когда появились Objects#equals
7.2. Метод сравнения объектов#
Теперь давайте сравним порядок объектов с методом ObjectUtils#compare . Это универсальный метод, который принимает два Сопоставимых аргумента этого универсального типа и возвращает Целое число .
Давайте еще раз посмотрим, как использовать Strings :
По умолчанию метод обрабатывает значения null , считая их большими. Он предлагает перегруженную версию, которая предлагает инвертировать это поведение и считать их меньшими, принимая аргумент boolean .
8. Гуава
Теперь давайте взглянем на Гуава . Прежде всего, давайте импортируем зависимость :
8.1. Объекты#равный метод
Подобно библиотеке Apache Commons, Google предоставляет нам метод определения равенства двух объектов, Объекты#равны . Хотя они имеют разные реализации, они возвращают одни и те же результаты:
Хотя он не помечен как устаревший, JavaDoc этого метода говорит, что его следует считать устаревшим, поскольку Java 7 предоставляет метод Objects#equals .
8.2. Методы сравнения
Теперь библиотека Guava не предлагает метод для сравнения двух объектов (мы увидим в следующем разделе, что мы можем сделать для этого), но она предоставляет нам методы для сравнения примитивных значений . Давайте возьмем вспомогательный класс Ints и посмотрим, как работает его метод compare() :
Как обычно, он возвращает целое число , которое может быть отрицательным, нулевым или положительным, если первый аргумент меньше, равен или больше второго, соответственно. Аналогичные методы существуют для всех примитивных типов, за исключением bytes .
8.3. Класс сравнительной цепи
Наконец, библиотека Guava предлагает класс ComparisonChain , который позволяет нам сравнивать два объекта с помощью цепочки сравнений. Мы можем легко сравнить два Человека объекта по имени и фамилии:
Базовое сравнение достигается с помощью метода compareTo () , поэтому аргументы, передаваемые методам compare () , должны быть либо примитивами, либо Сопоставимыми s.
9. Заключение
В этой статье мы рассмотрели различные способы сравнения объектов в Java. Мы рассмотрели разницу между одинаковостью, равенством и упорядоченностью. Мы также рассмотрели соответствующие функции в библиотеках Apache Commons и Guava.
Как обычно, полный код этой статьи можно найти на GitHub .
Источник