comparable comparator interfaces java
Овај водич на примерима објашњава концепт упоредивих и упоредних интерфејса у Јави. Такође ћете научити о разликама између њих двоје:
Све о интерфејсима научили смо у нашим ранијим водичима. Интерфејс се користи за декларисање апстрактних метода и статичких или коначних променљивих. Методе интерфејса су подразумевано јавне. Од Јава 8, интерфејси такође могу имати дефинисане статичке и подразумеване методе.
Јава нуди разне уграђене интерфејсе које можемо користити за обављање различитих операција. У овом упутству ћемо размотрити два таква интерфејса, тј. Цомпарабле и Цомпаратор. Упоредни интерфејс се користи за сортирање предмета према природном редоследу. Упоредни интерфејс се користи за сортирање појединачних атрибута различитих објеката.
=> Овде истражите једноставну серију Јава тренинга.
Почнимо са упоредивим интерфејсом.
Шта ћете научити:
- Упоредив интерфејс у Јави
- Упоредни интерфејс у Јави
- Разлика између упоредивих вс упоредника
- Закључак
Упоредив интерфејс у Јави
Упоредиви интерфејс сортира структуре листе као што су Арраис и АрраиЛистс који садрже прилагођене објекте. Једном када објекти листе имплементирају упоредиви интерфејс, тада можемо користити методу Цоллецтионс.сорт () или Арраис.сорт () у случају низова за сортирање садржаја.
Али када имамо прилагођене класе и треба да сортирамо њихове објекте, тада ћемо у ову класу морати да применимо интерфејс Цомпарабле. Упоредни интерфејс је део јава.ланг пакет. Овај интерфејс има само један метод, ЦомпареТо (). Коришћењем упоредивог интерфејса можемо истовремено сортирати по једног члана података.
На пример, ако имамо име и старост као поља у нашој класи, тада истовремено можемо сортирати објекте класе по имену или старости. Не можемо истовремено сортирати и име и године.
Као што је горе објашњено, упоредни интерфејс у Јава можемо имплементирати тако што ћемо имати прилагођену класу за примену упоредивог интерфејса. Упоредиви интерфејс има само једну методу ‘цомпареТо’ коју у класи треба надјачати да би се сортирали прилагођени објекти.
Метод „ЦомпареТо“
Метода ‘цомпареТо’ упоредивог интерфејса користи се за упоређивање тренутног објекта са датим објектом. Општа синтакса објекта цомпареТо дата је у наставку.
публиц инт цомпареТо (објекат обј)
Као што је горе приказано, метода цомпареТо прихвата објекат као аргумент (то може бити било који прилагођени објекат) и упоређује га са тренутним објектом који се користи за позивање ове методе.
Метода цомпареТо враћа целу вредност која може имати једну од следећих вредности:
- Позитиван (> 0) цео број => тренутни објекат> прослеђени параметар објекта.
- Негативно (тренутни објекат
- Нула (= 0) => тренутни објекат и наведени објекат су једнаки.
За сортирање можемо користити методу цомпареТо ():
- Објекти типа стринга
- Објекти класе омотача
- Кориснички дефинисани или прилагођени објекти
Сада ћемо применити пример упоредивог интерфејса.
Пример упоредивог интерфејса
Следећи Јава програм имплементира класу Персон која као име члана садржи име и старост. Ова класа примењује интерфејс „Упоредив“ који ће нам омогућити сортирање предмета класе Персон.
Имајте на уму да, док ћемо сортирати прилагођене објекте, морамо да заменимо методу ‘цомпареТо ()’ интерфејса Цомпарабле.
како одабрати радио дугме у селену вебдривер
Унутар замењене методе цомпареТо (), упоређујемо старост особе која је прослеђена и старост тренутног објекта и у складу с тим враћамо вредност.
Пример Јава програма дат је у наставку.
//class person implementing Comparable interface class Person implements Comparable { private String name; private int age; //Person constructor public Person(String name, int age) { this.name = name; this.age = age; } //getter methods for Person members public int getAge() { return this.age; } public String getName() { return this.name; } //override toString () method @Override public String toString() { return ''; } //Override compareTo () method to compare age of two Person objects @Override public int compareTo(Person per) { if(this.age == per.age) return 0; else return this.age > per.age ? 1 : -1; } } public class Main{ public static void main(String() args) { //declare two objects of Person class Person p1 = new Person('Adrian', 24); Person p2 = new Person('Eddie', 26); int ageDiff = p1.compareTo(p2); //compare ages of two persons declared switch(ageDiff) { case -1: { System.out.println(p2.getName() + ' is older than ' + p1.getName()); break; } case 1: { System.out.println(p1.getName() + ' is older than ' + p2.getName()); break; } default: System.out.println(p1.getName () + ' and ' + p2.getName () + ' are of the same age!'); } } }
Излаз:
Као што се види из резултата, користимо упоредни интерфејс за упоређивање два објекта класе Персон на основу променљиве аге аге.
Дакле, као што и само име говори, упоредиви интерфејс нам омогућава да упоређујемо један објекат са другим под условом да су објекти истог типа. Све док објекти знају да се сами распоређују, можемо их лако сортирати користећи јединствену методу ‘цомпареТо ()’ која припада овом интерфејсу.
Јава Стринг ЦомпареТо () метода
Такође можемо користити методу цомпареТо () да упоредимо два објекта типа Стринг у Јави. Два ниска објекта се упоређују лексикографски претварањем сваког карактера објекта стринга у његов еквивалентни Уницоде знак.
Ако су два низа једнака, тада се враћа 0. Ако је први објекат већи од другог, враћа се позитивна и негативна вредност ако је први објект низа мањи од другог објекта Стринг.
На пример,
стринг1.цомпареТо (стринг2) упоредиће стринг1 и стринг 2 лексикографски.
public class Main { public static void main(String args()) { //declare and print string objects String str1 = 'SoftwareTestingHelp'; String str2 = 'Java Series tutorial'; String str3 = 'Comparable Interface'; System.out.println('str1:' + str1); System.out.println('str2:' + str2); System.out.println('str3:' + str3); //compare strings and print the results. int retval1 = str1.compareTo( str2 ); System.out.println('
str1 & str2 comparison: '+retval1); int retval2 = str1.compareTo( str3 ); System.out.println('str1 & str3 comparison: '+retval2); int retval3 = str2.compareTo('compareTo method'); System.out.println('str2 & string argument comparison: '+retval3); } }
Излаз:
У горњем програму видели смо како да користимо методу цомпареТо () за упоређивање два низа. Пре тога, користили смо методу цомпареТо () за упоређивање целобројних вредности (старост на пример). Слично томе, можемо користити и друге типове података попут дуплих са методом цомпареТо ().
Пређимо сада на компаратор интерфејс у Јави.
Упоредни интерфејс у Јави
Већ смо видели рад упоредивог интерфејса. Упоредиви интерфејс омогућава нам сортирање прилагођених објеката на основу једног члана података. Али када се појави захтев за сортирање објекта на основу више поља или чланова података, тада се можемо одлучити за интерфејс за упоређивање.
Коришћењем интерфејса упоређивача можемо створити више упоређивача у зависности од тога колико поља желимо да користимо за сортирање прилагођених објеката. Коришћењем интерфејса за упоређивање, претпоставимо да желимо да сортирамо прилагођени објекат на два поља члана: име и старост, тада морамо да имамо два упоређивача, један за име и један за старост.
Тада можемо позвати метод Цоллецтионс.сорт () са овим Компараторима.
Па како тачно можемо да напишемо компараторе?
Размотримо пример ученика разреда са именом и узрастом као подручјем. Узмите у обзир да желимо да сортирамо студентске објекте по пољима имена и старости.
У ту сврху прво ћемо морати да напишемо класе упоређивача, СтудентАгеЦомпаратор и СтуденНамеЦомпаратор. У овим класама ћемо заменити методу цомпаре () интерфејса Цомпаратор, а затим ћемо позвати методу Цоллецтионс.сорт користећи сваки од ових компаратора за сортирање студентских објеката.
Интерфејс за упоређивање садржи објект „упореди“ који се користи за упоређивање објеката две различите класе. Општа синтакса методе упоређивања је:
јавни инт упореди (Објект обј1, Објект обј2);
Метода упоређивања упоређује обј1 са обј2.
Интерфејс упоређивача је део јава.утил пакет и осим методе упоређивања; садржи и другу методу која се назива једнако.
Пример Јава упоређивача
Применимо пример упоређивача на Јави. Поново смо узели час ученика са именом и годинама као члановима података. Затим дефинишемо класу упоређивача АгеЦомпаратор која поништава методу упоређивања да би упоредила узраст два ученика и вратила одговарајуће вредности.
У главној методи конструишемо Арраилист студентских објеката. Тада позивамо методу Цоллецтионс.сорт са објектима АрраиЛист и АгеЦомпаратор као аргументе. Ово сортира студентске предмете према старости.
Јава програм који примењује овај сценарио дат је у наставку.
import java.util.*; //class student whose objects are to be sorted class Student{ int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } } //AgeComparator class implementing Comparator to compare objects class AgeComparator implements Comparator { public int compare(Object o1,Object o2){ Student s1=(Student)o1; Student s2=(Student)o2; if(s1.age==s2.age) return 0; else if(s1.age>s2.age) return 1; else return -1; } } class Main{ public static void main(String args()){ //create an ArrayList of Students ArrayList myList=new ArrayList(); myList.add(new Student(101,'Adrian',25)); myList.add(new Student(106,'Sydney',22)); myList.add(new Student(105,'Marcus',27)); //call Collections.sort method with AgeComparator object to sort ArrayList Collections.sort(myList,new AgeComparator()); System.out.println('Sorted Student objects by Age are as follows:'); Iterator iter= myList.iterator(); while(iter.hasNext()){ Student st=(Student) iter.next(); System.out.println(st.rollno+' '+st.name+' '+st.age); } } }
Излаз:
У горњем програму, слично начину на који смо написали АгеЦомпаратор за сортирање студентских објеката на основу Аге, такође можемо написати други НамеЦомпаратор за сортирање студентских објеката на основу поља имена.
На овај начин можемо имати онолико класа упоређивача колико је потребно за сортирање објеката у разним пољима. Начин на који смо упоређивали две променљиве типа инт, такође можемо упоређивати променљиве осталих типова података помоћу методе упоређивања.
Разлика између упоредивих вс упоредника
Упоредив интерфејс | Упоредни интерфејс |
---|---|
Користи Цоллецтионс.сорт (Лист) за сортирање елемената. | Користи Цоллецтионс.сорт (Лист, Цомпаратор) за сортирање елемената. |
Упоредиви интерфејс омогућава сортирање у једном пољу. | Интерфејс за упоређивање омогућава сортирање више поља. |
Упоредиви интерфејс сортира објекте према природном редоследу. | Интерфејс за упоређивање сортира различите атрибуте различитих објеката. |
Коришћењем упоредивог интерфејса можемо упоредити тренутни објекат „ово“ са наведеним објектом. | Помоћу интерфејса за упоређивање можемо упоређивати објекте различитих класа. |
Део пакета јава.ланг. | Део пакета јава.утил. |
Коришћење упоредивог интерфејса модификује стварну класу. | Компаратор не мења оригиналну класу. |
Пружа методу цомпареТо () за сортирање елемената. | Пружа методу цомпаре () за сортирање елемената. |
Често постављана питања
П # 1) Да ли је упоредив функционални интерфејс?
Одговор: Да, упоредив је функционални интерфејс. Декларише једну апстрактну методу, цомпареТо ().
П # 2) Како направити наставу упоредивом?
Одговор: Класу чинимо упоредивом применом интерфејса Цомпарабле. Унутар класе надјачавамо методу цомпареТо () да бисмо сортирали објекат. Преносимо објекат и упоређујемо га са тренутним објектом.
Метода цомпареТо () враћа 0 ако су два објекта једнака. Враћа негативан број ако је први објекат мањи од другог и позитиван ако је први објекат већи од другог.
П # 3) Која је главна сврха интерфејса за упоређивање?
Одговор: Интерфејс за упоређивање углавном се користи за сортирање прилагођених објеката. Упоредни интерфејс се може користити и за упоређивање објеката различитих класа. Такође, интерфејс за упоређивање може се користити за сортирање објеката у више поља.
П # 4) Зашто се упоређивач користи у Јави?
Одговор: Интерфејс за упоређивање се углавном користи када желимо другачији редослед сортирања за наше прилагођене објекте, осим природног редоследа на основу више поља.
П # 5) Шта примењује упоредиви интерфејс?
Одговор: Упоредиви интерфејс примењују све класе омотача и класа Стринг. Прилагођени објекти такође користе упоредиви интерфејс за сортирање.
Закључак
У овом упутству смо разговарали о упоредивим и упоредним интерфејсима у Јави. Упоредни интерфејс се користи за сортирање објеката према природном редоследу и истовремено може сортирати објекте само на једном пољу.
Упоредиви интерфејс има методу ‘цомпареТо ()’ који треба надјачати у класи која примењује интерфејс упоредника и чији ће објекти бити сортирани.
Интерфејс упоређивача користи се за сортирање прилагођених објеката који се сортирају према било којем другом редоследу. Интерфејс за упоређивање такође нам омогућава сортирање објеката две различите класе на основу више поља.
=> Прочитајте серију Еаси Јава Траининг.
Препоручено читање
- Јава интерфејс и лекција са апстрактним часовима са примерима
- Постављање интерфејса у Јави: Водич за постављање Јава са примерима
- Примена Јава-а: Стварање и извршавање Јава ЈАР датотеке
- Основе Јава-а: Јава синтакса, Јава Цласс и основни Јава концепти
- Јава виртуелна машина: како ЈВМ помаже у покретању Јава апликације
- ЛистИтератор сучеље у Јави са примерима
- Низ објеката у Јави: Како створити, покренути и користити
- Водич за ЈАВА за почетнике: 100+ практичних Јава видео водича