Guava rendelési szakácskönyv
1. Bemutatkozás
Ez a szakácskönyv szemlélteti hogyan kell használni a guava stílusú Rendezés és összehasonlítókat. Folytatja a szakácskönyv és a példa fókusz formátumot, amelyet az előző, a guavai gyűjteményekről szóló bejegyzésben kezdtem.
2. Szakácskönyv
nullákkal foglalkozik egy gyűjteményben
előbb nullák
List toSort = Tömbök.asList (3, 5, 4, null, 1, 2); Collections.sort (toSort, Ordering.natural (). NullsFirst ()); assertThat (toSort.get (0), nullValue ());
nulls utoljára
List toSort = Tömbök.asList (3, 5, 4, null, 1, 2); Collections.sort (toSort, Ordering.natural (). NullsLast ()); assertThat (toSort.get (toSort.size () - 1), nullValue ());
természetes rendezés
List toSort = Tömbök.asList (3, 5, 4, 1, 2); Gyűjtemények.rendezés (toSort, Orderingnatural ()); assertTrue (Rendezés.természetes (). isOrdered (toSort));
2 rendelés láncolása
List toSort = Tömbök.asList (3, 5, 4, 1, 2); Gyűjtemények.sort (toSort, Rendezés.natural (). Reverse ());
megrendelés visszavonása
List toSort = Tömbök.asList (3, 5, 4, null, 1, 2); Collections.sort (toSort, Ordering.natural (). NullsLast (). Reverse ()); assertThat (toSort.get (0), nullValue ());
egyedi sorrend - Húrok hossz szerint
privát osztály A OrderingByLenght kiterjeszti a {@Orride public int összehasonlítás (String s1, String s2) {return Ints.compare (s1.length (), s2.length ()); }} List toSort = Tömbök.asList ("zz", "aa", "b", "ccc"); Rendezés byLength = új OrderingByLenght (); Collections.sort (toSort, byLength); Rendelés várhatóOrder = Rendelés.explicit (Lists.newArrayList ("b", "zz", "aa", "ccc")); assertTrue (várhatóOrder.isOrdered (toSort))
explicit sorrend ellenőrzése
List toSort = Arrays.asList ("zz", "aa", "b", "ccc"); Rendezés byLength = új OrderingByLenght (); Collections.sort (toSort, byLength); Rendelés várhatóOrder = Rendelés.explicit (Lists.newArrayList ("b", "zz", "aa", "ccc")); assertTrue (várhatóOrder.isOrdered (toSort));
húrrendelés ellenőrzése
List toSort = Tömbök.asList (3, 5, 4, 2, 1, 2); Gyűjtemények.rendezés (toSort, Orderingnatural ()); assertFalse (Rendezés.természetes (). isStrictlyOrdered (toSort));
másodlagos rendelés
List toSort = Arrays.asList ("zz", "aa", "b", "ccc"); Rendezés byLength = új OrderingByLenght (); Collections.sort (toSort, byLength.compound (Rendezés.természetes ())); Rendelés várhatóOrder = Rendelés.explicit (Lists.newArrayList ("b", "aa", "zz", "ccc")); assertTrue (várhatóOrder.isOrdered (toSort));
komplex egyedi rendelési példa - láncolással rendezés a Sztring reprezentáció rendezés, majd megkeresés (bináris keresés) min / max keresés válogatás nélkül (gyorsabb) a lista rendezett másolatának létrehozása megrendelésből rendezett részleges másolat létrehozása - a legkevesebb elem rendelés közvetítőn keresztül Funkció – jegyzet: a rendezési logika először a függvényen keresztül futtatja a számokat - átalakítja őket karakterláncokká -, majd a sorrendben rendezi a természetes sorrendet A Guava egy átfogó és fantasztikusan hasznos könyvtár - íme néhány további API a szakácskönyv formában: Élvezd. Ennek a kísérleti formátumnak - a szakácskönyvnek - egyértelmű fókusza van - az egyszerűség és a gyorsaság, tehát a legtöbb recept megvan nincs további magyarázat, csak maga a kódpélda. És mint korábban említettem - ez mint élő dokumentum - új megjegyzéseket és felhasználási eseteket szívesen fogadunk a megjegyzésekben, és folytatom a sajátjaim hozzáadását, amikor összefutok velük. Mindezen példák és kódrészletek megvalósítása megtalálható a GitHubon - ez egy Maven-alapú projekt, ezért könnyen importálhatónak és futtathatónak kell lennie.List toSort = tömbök.asList ("zz", "aa", null, "b", "ccc"); Collections.sort (toSort, új OrderingByLenght (). Reverse (). Összetett (Ordering.natural ()). NullsLast ()); System.out.println (toSort);
List toSort = Tömbök.asList (1, 2, 11); Gyűjtemények.sort (toSort, Ordering.usingToString ()); Rendelés várhatóOrder = Rendelés.explicit (Lists.newArrayList (1, 11, 2)); assertTrue (várhatóOrder.isOrdered (toSort));
List toSort = Tömbök.asList (1, 2, 11); Gyűjtemények.sort (toSort, Ordering.usingToString ()); int talált = Ordering.usingToString (). binarySearch (toSort, 2); System.out.println (talált);
List toSort = Tömbök.asList (2, 1, 11, 100, 8, 14); int talált = Ordering.usingToString (). min (toSort); assertThat (talált, egyenlőTo (1));
List toSort = Arrays.asList ("aa", "b", "ccc"); List sortedCopy = új OrderingByLenght (). SortedCopy (toSort); Rendelés várhatóOrder = Rendelés.explicit (Lists.newArrayList ("b", "aa", "ccc")); assertFalse (várhatóOrder.isOrdered (toSort)); assertTrue (várhatóOrder.isOrdered (sortedCopy));
List toSort = Tömbök.asList (2, 1, 11, 100, 8, 14); List legkevesebb = Rendezés.természetes (). Legkevesebb (toSort, 3); Várható lista = Lists.newArrayList (1, 2, 8); assertThat (várható, egyenlőTo (legkevesebbOf));
List toSort = Tömbök.asList (2, 1, 11, 100, 8, 14); Rendelési sorrend = Ordering.natural (). OnResultOf (Functions.toStringFunction ()); List sortedCopy = ordering.sortedCopy (toSort); Várható lista = Lists.newArrayList (1, 100, 11, 14, 2, 8); assertThat (várható, equalTo (sortedCopy));
3. További guavai szakácskönyvek
Guava funkcionális szakácskönyv
Guava gyűjtemények szakácskönyve
4. Következtetés