Třída párů je známá těm z nás, kteří používali C ++ po delší dobu. Ačkoli se hovoří o jeho přidání do Javy jako standardní součásti SDK, jedná se o poněkud kontroverzní téma. Několik lidí o to formálně požádalo a dokonce byly podány chyby (4947273, 4983155 a 6229146), které jej mají získat v Javě. V příspěvku s otázkou Chceme java.util.Pair? Dělá Alex Miller pěknou práci tím, že pokrývá obě strany problému.
Již existují implementace Pár
nebo a Pár
-jako ekvivalent tam venku pro Javu. Kromě neznámého počtu vlastních v místních kódových základnách existují veřejně dostupné příklady, jako jsou ty, které poskytuje post Java Pair Class, příklady poskytované ve vlákně StackOverflow, Ideograph's Generic Pair a (bez překvapení) Java Tuples's Pair. Sada Android SDK také obsahuje třídu Pair. Ten, který mě nejvíce překvapil, je existence třídy javafx.util.Pair JavaFX 2.0.
Název balíčku a třídy nejčastěji navrhovaný pro verzi SDK sady SDK Pár
třída byla java.util.Pair
a verze JavaFX je podobná v názvu balíčku: javafx.util.Pair
. Spuštění javapu proti této třídě v JavaFX SDK vede k následujícímu výstupu.
Zkompilováno z „Pair.java“ veřejné třídy javafx.util.Pair {public K getKey (); public V getValue (); public javafx.util.Pair (K, V); public java.lang.String toString (); public int hashCode (); public boolean equals (java.lang.Object); }
Jak je uvedeno výše javap
output označuje, že se jedná o relativně jednoduchou třídu se základním parametrizovaným konstruktorem, metodami „get“ pro části klíče a hodnoty Pár
a „běžné“ metody toString ()
, rovná se (Objekt)
, a hashCode ()
. Následující výpis kódu ukazuje použití parametrizovaného konstruktoru k poskytnutí klíče a hodnoty každé instanci Pár
to je instancováno.
/ ** * Poskytněte sbírku slavných párů. * * @return Sbírka slavných párů. * / soukromá statická sbírka createFamousPairs () {final Collection pair = nový ArrayList(); pair.add (nový pár ("Yin", "Yang")); pair.add (nový pár („Akce“, „Reakce“)); pair.add (nový pár („sůl“, „pepř“)); pair.add (nový pár ("Starsky", "Hutch")); pair.add (nový pár („Fox“, „Mulder“)); pair.add (nový pár („Batman“, „Robin“)); pair.add (nový Pair ("Fred Astaire", "Ginger Rogers")); pair.add (nový pár („Flotsam“, „Jetsam“)); pair.add (nový pár ("Brutus", "Nero")); pair.add (nový pár („Tom“, „Jerry“)); pair.add (nový pár („Jekyll“, „Hyde“)); pair.add (nový pár ("Holmes", "Watson")); pair.add (nový pár ("Mario", "Luigi")); pair.add (nový pár („Pinky“, „The Brain“)); pair.add (nový pár ("Wallace", "Gromit")); návratové páry; }
Přístup ke klíči a hodnotě každého z nich Pár
je také snadné, jak ukazuje následující ukázka kódu.
/ ** * Zapište poskytnutou kolekci párů na standardní výstup. * * @param title Název pro výstup zapsaný na standardní výstup. * @param pairToPrint Páry, které mají být zapsány na standardní výstup. * / private static void writeCollectionOfPairs (finální název řetězce, finální kolekce pairToPrint) {out.println (title + ":"); for (final Pair pair: pairToPrint) {out.println ("\ t" + pair.getKey () + "a" + pair.getValue ()); }}
Výše uvedený příklad je poměrně vymyšlený, ale lze jej považovat za nejefektivnější použití Pár
protože v tomto konkrétním příkladu je to skutečně reprezentovaný „párový“ koncept. Jedna z největších stížností na přidání Pár
SDK nebo jeho obecné použití spočívá v tom, že není pojmenován dostatečně konkrétně, aby pokryl obchodní účel existence objektu. Vlastně jsem přemýšlel o použití JavaFX Pár
třídy, když jsem psal svůj příklad Vánoční strom pro příspěvek Vánoční strom JavaFX 2.0 (Tvary JavaFX 2.0). Nakonec jsem se rozhodl proti tomu a použil jsem vhodněji pojmenovaný vnořený Koordinovat
třída. Mohl jsem však snadno použít Pár
v tom příkladu. Další výpis kódu obsahuje tento příklad s vnořeným Koordinovat
třída odstraněna a odkazy na ni nahrazeny Pár
.