Ano ang Comparator Interface sa Java na may Mga Halimbawa?

Ano Ang Comparator Interface Sa Java Na May Mga Halimbawa



Sa Java, ang interface ng Comparator ay ginagamit upang tukuyin ang isang function ng paghahambing na maaaring magamit upang pagbukud-bukurin ang isang koleksyon ng mga bagay. Pinapayagan nito ang pag-uuri ng mga bagay batay sa pasadyang pamantayan sa halip na ang default na paghahambing batay sa natural na pagkakasunud-sunod. Mayroon itong iba't ibang mga application upang i-customize ang mga function ayon sa mga pangangailangan. Ipapaliwanag ng artikulong ito ang interface ng Comparator kasama ang maraming halimbawa sa Java.

Ano ang Comparator Interface sa Java na may Mga Halimbawa?

Ang interface ng Comparator ay naglalaman ng mga pamamaraan ng compare() at equals(). Ang unang paraan ay ginagamit upang makalkula ang dalawang bagay sa pamamagitan ng pagbabalik ng isang integer na halaga. Ang iba pang paraan ay ginagamit para sa pag-compute ng dalawang comparator object para sa pagkakapantay-pantay.

Narito ang iba't ibang halimbawa ng kung paano gamitin ang interface ng Comparator sa Java:







Halimbawa 1: Pagbukud-bukurin ang Listahan batay sa Haba

Sa halimbawang ito, ang isang listahan ng mga string ay isinasaalang-alang at pag-uri-uriin ang mga ito batay sa haba ng mga ito sa halip na alpabetikong pagkakasunud-sunod:



angkat java.util.ArrayList ;

angkat java.util.Collections ;

angkat java.util.Comparator ;

angkat java.util.List ;

pampubliko klase Pangunahing {

pampubliko static walang bisa pangunahing ( String [ ] args ) {

Listahan < String > listahan = bago ArrayList <> ( ) ;

listahan. idagdag ( 'John' ) ;

listahan. idagdag ( 'Bob' ) ;

listahan. idagdag ( 'Alice' ) ;

Mga koleksyon . uri ( listahan ) ;

Sistema . palabas . println ( listahan ) ;

Mga koleksyon . uri ( listahan, bago StringLengthComparator ( ) ) ;

Sistema . palabas . println ( listahan ) ;

}

} // Ang isang klase ay tinukoy

klase StringLengthComparator nagpapatupad Kumpare < String > {

pampubliko int ihambing ( String s1, String s2 ) {

bumalik Integer . ihambing ( s1. haba ( ) , s2. haba ( ) ) ;

}

}

Ang paglalarawan ng code sa itaas ay ibinigay sa ibaba:



  • Una, gumawa ng custom na klase ng Comparator na tinatawag na StringLengthComparator na nagpapatupad ng interface ng Comparator.
  • Ino-override nito ang compare() na paraan para sa paghahambing ng haba ng dalawang string.
  • Sa huli, ipasa ang isang instance sa.sort() na paraan para sa pag-uuri ng listahan gamit ang aming custom na comparator.

Output





Ang unang output ay ang resulta ng pag-uuri ng listahan gamit ang natural na pag-order, habang ang pangalawang output ay ang resulta ng pag-uuri ng listahan gamit ang aming custom na comparator batay sa haba ng bawat string.



Halimbawa 2: Pag-uuri ng mga Bagay Batay sa Isang Tukoy na Patlang

Ang isa pang halimbawa ay isinasagawa upang pagbukud-bukurin ang mga bagay batay sa isang partikular na field. Ang interface ng Comparator ay ginagamit upang makamit ito:

angkat java.util.ArrayList ;

angkat java.util.Collections ;

angkat java.util.Comparator ;

angkat java.util.List ;

pampubliko klase Pangunahing {

pampubliko static walang bisa pangunahing ( String [ ] args ) {

Listahan < Tao > mga tao = bago ArrayList <> ( ) ; // Magtalaga ng pangalan, edad at suweldo

mga tao. idagdag ( bago Tao ( 'Alice' , 25 , 50000 ) ) ;

mga tao. idagdag ( bago Tao ( 'Bob' , 30 , 75000 ) ) ;

mga tao. idagdag ( bago Tao ( 'Charlie' , dalawampu , 40000 ) ) ;

Kumpare < Tao > suweldoComparator = bago Kumpare < Tao > ( ) {

// Pagbukud-bukurin ang mga tao batay sa suweldo

pampubliko int ihambing ( Tao p1, Tao p2 ) {

bumalik Integer . ihambing ( p2. makakuha ng Salary ( ) , p1. makakuha ng Salary ( ) ) ;

}

} ;

Mga koleksyon . uri ( mga tao, suweldoComparator ) ; bumalik pag-uuri ng mga halaga

// Mag-print ng pinagsunod-sunod na listahan ng mga tao

para sa ( Tao tao : mga tao ) {

Sistema . palabas . println ( tao ) ;

}

}

}

klase Tao { // Tukuyin ang pangalan, edad, at suweldo

pribado String pangalan ; // saklaw sa loob ng isang klase
pribado int edad ;
pribado int suweldo ;

pampubliko Tao ( String pangalan, int edad, int suweldo ) {
ito . pangalan = pangalan ;
ito . edad = edad ;
ito . suweldo = suweldo ;
}
pampubliko String getName ( ) {
bumalik pangalan ;
}
pampubliko int getAge ( ) {
bumalik edad ;
}
pampubliko int makakuha ng Salary ( ) {
bumalik suweldo ;
}
pampubliko String toString ( ) {
bumalik pangalan + '(edad' + edad + ', suweldo $' + suweldo + ')' ;
}
}

Ang paglalarawan ng code ay ibinigay sa ibaba:

  • Isang klase na tinatawag na ' Tao ” na may tatlong field: “ pangalan ”, “ edad ”, at “ suweldo ' Isinasaalang-alang.
  • Pagkatapos nito, pag-uri-uriin ang isang koleksyon ng mga bagay na Tao depende sa kanilang suweldo sa pababang pagkakasunud-sunod.

Output

Ang output ay nagpapakita na ang mga suweldo ay pinagsunod-sunod ayon sa pababang pagkakasunud-sunod.

Konklusyon

Sa Java, ang interface ng Comparator ay isang mahusay na tool na nagbibigay-daan sa mga user na pagbukud-bukurin ang mga bagay batay sa custom na pamantayan. Ino-override nito ang compare() na paraan, maaaring tukuyin ng mga user ang kanilang sariling function ng paghahambing at gamitin ito upang pag-uri-uriin ang mga koleksyon ng mga bagay sa iba't ibang paraan. Ipinaliwanag ng artikulong ito ang interface ng Comparator kasama ang mga praktikal na halimbawa sa Java.