Co je rozhraní komparátoru v Javě s příklady?

Co Je Rozhrani Komparatoru V Jave S Priklady



V Javě se rozhraní Comparator používá k definování porovnávací funkce, kterou lze použít k třídění kolekce objektů. Umožňuje třídit objekty na základě vlastních kritérií spíše než výchozí porovnání založené na přirozeném řazení. Má různé aplikace pro přizpůsobení funkcí podle potřeb. Tento článek vysvětlí rozhraní komparátoru spolu s mnoha příklady v Javě.

Co je rozhraní komparátoru v Javě s příklady?

Rozhraní Comparator obsahuje metody Compare() a equals(). První metoda se používá k výpočtu dvou objektů vrácením celočíselné hodnoty. Druhá metoda se používá pro výpočet dvou srovnávacích objektů pro rovnost.

Zde jsou různé příklady, jak používat rozhraní komparátoru v Javě:







Příklad 1: Seřaďte seznam podle délky

V tomto příkladu je zvažován seznam řetězců a seřazeny podle jejich délky namísto abecedního pořadí:



import java.util.ArrayList ;

import java.util.Collections ;

import java.util.Comparator ;

import java.util.List ;

veřejnost třída Hlavní {

veřejnost statický prázdnota hlavní ( Tětiva [ ] argumenty ) {

Seznam < Tětiva > seznam = Nový ArrayList <> ( ) ;

seznam. přidat ( 'John' ) ;

seznam. přidat ( 'Bob' ) ;

seznam. přidat ( 'Alice' ) ;

Sbírky . seřadit ( seznam ) ;

Systém . ven . println ( seznam ) ;

Sbírky . seřadit ( seznam, Nový StringLengthComparator ( ) ) ;

Systém . ven . println ( seznam ) ;

}

} // Je definována třída

třída StringLengthComparator nářadí Komparátor < Tětiva > {

veřejnost int porovnat ( Tětiva s1, Tětiva s2 ) {

vrátit se Celé číslo . porovnat ( s1. délka ( ) , s2. délka ( ) ) ;

}

}

Popis výše uvedeného kódu je uveden níže:



  • Nejprve vytvořte vlastní třídu Comparator nazvanou StringLengthComparator, která implementuje rozhraní Comparator.
  • Přepisuje metodu Compare() pro porovnávání délky dvou řetězců.
  • Nakonec předejte instanci metodě.sort() pro seřazení seznamu pomocí našeho vlastního komparátoru.

Výstup





První výstup je výsledkem řazení seznamu pomocí přirozeného řazení, zatímco druhý výstup je výsledkem řazení seznamu pomocí našeho vlastního komparátoru na základě délky každého řetězce.



Příklad 2: Třídění objektů na základě konkrétního pole

Dalším příkladem je třídění objektů na základě konkrétního pole. K dosažení tohoto cíle se používá rozhraní komparátoru:

import java.util.ArrayList ;

import java.util.Collections ;

import java.util.Comparator ;

import java.util.List ;

veřejnost třída Hlavní {

veřejnost statický prázdnota hlavní ( Tětiva [ ] argumenty ) {

Seznam < Osoba > osob = Nový ArrayList <> ( ) ; // Přiřadit jméno, věk a platy

osob. přidat ( Nový Osoba ( 'Alice' , 25 , 50 000 ) ) ;

osob. přidat ( Nový Osoba ( 'Bob' , 30 , 75 000 ) ) ;

osob. přidat ( Nový Osoba ( 'Kája' , dvacet , 40 000 ) ) ;

Komparátor < Osoba > srovnávač mezd = Nový Komparátor < Osoba > ( ) {

// Seřadit osoby podle platu

veřejnost int porovnat ( Osoba p1, Osoba p2 ) {

vrátit se Celé číslo . porovnat ( p2. získat plat ( ) , p1. získat plat ( ) ) ;

}

} ;

Sbírky . seřadit ( osob, platSrovnávač ) ; vrátit se seřadit hodnoty

// Tisk seřazeného seznamu osob

pro ( Osoba osoba : osob ) {

Systém . ven . println ( osoba ) ;

}

}

}

třída Osoba { // Definujte jméno, věk a plat

soukromé Tětiva název ; // rozsah v rámci třídy
soukromé int stáří ;
soukromé int plat ;

veřejnost Osoba ( Tětiva název, int stáří, int plat ) {
tento . název = název ;
tento . stáří = stáří ;
tento . plat = plat ;
}
veřejnost Tětiva getName ( ) {
vrátit se název ;
}
veřejnost int getAge ( ) {
vrátit se stáří ;
}
veřejnost int získat plat ( ) {
vrátit se plat ;
}
veřejnost Tětiva toString ( ) {
vrátit se název + '(věk' + stáří + ', plat $' + plat + ')' ;
}
}

Popis kódu je uveden níže:

  • Třída s názvem „ Osoba “ se třemi poli: “ název “, “ stáří ', a ' plat ' je považován.
  • Poté seřaďte sbírku objektů osob v sestupném pořadí podle jejich platu.

Výstup

Výstup ukazuje, že platy byly seřazeny sestupně.

Závěr

V Javě je rozhraní Comparator výkonným nástrojem, který uživatelům umožňuje třídit objekty na základě vlastních kritérií. Přepisuje metodu Compare(), uživatelé mohou definovat svou vlastní porovnávací funkci a používat ji k třídění sbírek objektů různými způsoby. Tento článek vysvětluje rozhraní komparátoru spolu s praktickými příklady v Javě.