Sprievodca objednávaním spoločnosti Guava

1. Prehľad

V tomto článku sa pozrieme na Objednávanie triedy z knižnice Guava.

The Objednávanie trieda implementuje Komparátor rozhranie a poskytuje nám užitočné plynulé rozhranie API na vytváranie a reťazenie komparátorov.

Ako rýchly pomocník stojí tiež za to pozrieť sa na nový Comparator.comparing () API - ktoré poskytuje podobné funkcie; tu je praktický príklad použitia tohto API.

2. Tvorenie Objednávanie

Objednávanie má užitočnú metódu zostavovateľa, ktorá vracia správnu inštanciu, ktorú je možné použiť v a sort () metóda na zbierkach alebo kdekoľvek inde, kde je inštancia Komparátor je potrebné.

Inštanciu prirodzeného poriadku môžeme vytvoriť vykonaním metódy prírodné ():

Vypísať celé čísla = Arrays.asList (3, 2, 1); inteers.sort (Ordering.natural ()); assertEquals (Arrays.asList (1,2,3), celé čísla);

Povedzme, že máme zbierku Osoba objekty:

trieda Osoba {súkromné ​​meno reťazca; vek súkromných celých čísel; // štandardné konštruktory, getre}

A chceme triediť zoznam takýchto objektov podľa Vek lúka. Môžeme si vytvoriť svoj zvyk Objednávanie to urobí presne tým, že ho rozšíri:

Zoznam osôb = Arrays.asList (nová osoba ("Michael", 10), nová osoba ("Alice", 3)); Objednávka orderingByAge = nové Objednávka () {@Override public int compare (Osoba p1, Osoba p2) {návrat Ints.compare (p1.age, p2.age); }}; persons.sort (orderingByAge); assertEquals (Arrays.asList (nová osoba ("Alice", 3), nová osoba ("Michael", 10)), osoby);

Potom môžeme použiť náš orderingByAge a odovzdať to sort () metóda.

3. Reťazenie Objednávky

Jednou z užitočných funkcií tejto triedy je, že môžeme reťaziť rôznymi spôsobmi Objednávanie. Povedzme, že máme zbierku osôb a chceme ju zoradiť podľa Vek pole a mať nulový hodnoty vekového poľa na začiatku zoznamu:

Zoznam osôb = Arrays.asList (nová osoba ("Michael", 10), nová osoba ("Alice", 3), nová osoba ("Thomas", null)); Objednávanie objednávanie = Objednávanie .natural () .nullsFirst () .onResultOf (new Function () {@Override public Porovnateľné použitie (Osoba osoba) {návrat person.age;}}); osoby.triediť (objednávať); assertEquals (Arrays.asList (nová osoba ("Thomas", null), nová osoba ("Alice", 3), nová osoba ("Michael", 10)), osoby);

Je dôležité si tu všimnúť poradie, v akom konkrétne Objednávanies sa vykonávajú - objednávka je sprava doľava. Takže najskôr onResultOf () sa vykoná a táto metóda extrahuje pole, ktoré chceme porovnať.

Potom, nullFirst () komparátor je vykonaný. Z tohto dôvodu bude mať výsledný triedený zber a Osoba objekt, ktorý má a nulový ako Vek na začiatku zoznamu.

Na konci procesu triedenia Vek polia sa porovnávajú pomocou prirodzeného usporiadania, ako je určené pomocou metódy prírodné ().

4. Záver

V tomto článku sme sa pozreli na Objednávanie trieda z knižnice Guava, ktorá nám umožňuje vytvárať plynulejšie a elegantnejšie Komparátors. Vytvorili sme si náš zvyk Objednávanie, použili sme preddefinované z API a spojili sme ich reťazami, aby sme dosiahli viac vlastných objednávok.

Implementáciu všetkých týchto príkladov a útržkov kódu nájdete v projekte GitHub - jedná sa o projekt založený na Maven, takže by malo byť ľahké ho importovať a spustiť tak, ako je.


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