середу, 27 лютого 2013 р.

Java. Comparator vs Comparable. Теорія.

Comparable і Comparator - це інтерфейси, що використовуються для здійснення сортування в Java об"єктів, які збережені в колекції таких класів, як ArrayList, HashSet або Array. Для цього в нас є методи compare() або compareTo(), що визначені, відповідно в java.util.Comparator та java.lang.Comparable.
Отже, різниця між ними:
1) Comparator в Java належить до пакету java.util, а Comparable - до пакету java.lang. Отже, Comparable  може бути використаний за замовчуванням в той час як Comparator -
ідентифікуватись як утиліта. 
2) Інтерфейс Comparator  має метод public int compare (Object o1, Object o2), що повертає, відповідно, від"ємний int, нуль, або додатній int залежно від аргументів о1 та о2
3) Comparator  порівнює 2 задані об"єкти, а Comparable порівнює референс"this" з потрібним об"єктом.
4) Comparable використовується для реалізації природного порядку об"єктів (natural ordering). У  Java АРІ String, Date та класи - оболонки (wrapper) реалізує Comparator. 
5) Якщо якийсь клас імплементить Comparable,  значить колекції його об"єктів, List, Array можуть бути сортовані автоматично за допомогою Collections.sort() або Arrays.sort(), отже об"єкт буде сортований природнім порядком (natural ordering) за допомогою CompareTo. 
6) Об"єкти, що імплеменують Comparable, можуть бути використані як ключі в SortedMap (Treemap) або елементи в SortedSet без необхідності вказувати Comparator.

Інфа частково взята звідси.


Немає коментарів:

Дописати коментар