Vodič za naručivanje Guave

1. Pregled

U ovom ćemo članku pogledati Naručivanje razred iz knjižnice Guava.

The Naručivanje razred provodi Usporednik sučelje i daje nam koristan tečni API za stvaranje i ulančavanje usporedbi.

Kao brzi dodatak, vrijedi pogledati i novo Usporednik.comupoređivanje () API - koji pruža sličnu funkcionalnost; evo praktičnog primjera korištenja tog API-ja.

2. Stvaranje Naručivanje

Naručivanje ima korisnu metodu graditelja koja vraća ispravnu instancu koja se može koristiti u a vrsta() metoda na zbirkama ili bilo gdje drugdje gdje je instanca Usporednik potrebno je.

Primjerom prirodnog poretka možemo stvoriti izvršenje metode prirodni ():

Popis cijelih brojeva = Arrays.asList (3, 2, 1); integers.sort (Ordering.natural ()); assertEquals (Arrays.asList (1,2,3), cijeli brojevi);

Recimo da imamo kolekciju Osoba objekti:

klasa Osoba {ime privatnog niza; privatno Integer doba; // standardni konstruktori, getteri}

I mi želimo sortirati popis takvih predmeta po dob polje. Možemo stvoriti svoj običaj Naručivanje to će učiniti upravo to proširujući ga:

Popis osoba = Arrays.asList (nova osoba ("Michael", 10), nova osoba ("Alice", 3)); Naručivanje orderingByAge = novo naručivanje () {@Preuzmi javno int uspoređivanje (Osoba p1, Osoba p2) {return Ints.compare (p1.age, p2.age); }}; persons.sort (orderingByAge); assertEquals (Arrays.asList (nova osoba ("Alice", 3), nova osoba ("Michael", 10)), osobe);

Tada možemo koristiti svoje orderingByAge i proslijedite ga vrsta() metoda.

3. Ulančavanje Narudžbe

Jedna korisna značajka ove klase je ta da možemo povezati različite načine Naručivanje. Recimo da imamo zbirku osoba i želimo je sortirati dob polje i imaju null Vrijednosti polja starosti na početku popisa:

Popis osoba = Arrays.asList (nova osoba ("Michael", 10), nova osoba ("Alice", 3), nova osoba ("Thomas", null)); Naručivanje naručivanje = Naručivanje .natural () .nullsFirst () .onResultOf (nova funkcija () {@Premjesti javno Usporedivo vrijedi (Osoba osoba) {return person.age;}}); persons.sort (naručivanje); assertEquals (Arrays.asList (nova osoba ("Thomas", null), nova osoba ("Alice", 3), nova osoba ("Michael", 10)), osobe);

Ovdje je važno primijetiti redoslijed kojim Naručivanjes se izvršavaju - poredak je zdesna nalijevo. Pa prvo onResultOf () izvršava se i ta metoda izdvaja polje koje želimo usporediti.

Zatim, nullFirst () izvršava se usporednik. Zbog toga će rezultirajuća sortirana zbirka imati Osoba objekt koji ima null kao an dob polje na početku popisa.

Na kraju postupka sortiranja, dob polja se uspoređuju prirodnim redoslijedom kako je određeno metodom prirodno ().

4. Zaključak

U ovom smo članku pogledali Naručivanje klase iz biblioteke Guava koja nam omogućuje stvaranje fluidnijeg i elegantnijeg Usporedniks. Stvorili smo svoj običaj Naručivanje, koristili smo unaprijed definirane iz API-ja i povezali ih lancima kako bismo postigli više prilagođenog reda.

Provedbu svih ovih primjera i isječaka koda možete pronaći u projektu GitHub - ovo je projekt zasnovan na Mavenu, pa bi ga trebalo lako uvesti i pokrenuti kakav jest.


$config[zx-auto] not found$config[zx-overlay] not found