Porų klasė yra žinoma tiems iš mūsų, kurie ilgą laiką naudojo C ++. Nors buvo kalbėta apie jo įtraukimą į „Java“ kaip standartinę SDK dalį, tai yra kiek prieštaringa tema. Keli žmonės to oficialiai paprašė ir netgi buvo padaryta klaidų (4947273, 4983155 ir 6229146), kad ją gautumėte „Java“. Įraše, kuriame užduodamas klausimas, ar norime „java.util.Pair“, Alexas Milleris puikiai išlaiko savo darbą.
Jau yra įdiegta Pora
arba a Pora
panašus į „Java“. Be nežinomo skaičiaus įprastų vietinių kodų bazėse, yra viešai prieinamų pavyzdžių, tokių, kuriuos pateikia „Java Pair Class“, pavyzdžiai, pateikti „StackOverflow“ gijoje, „Ideograph“ bendroji pora ir (nenuostabu) „Java Tuples“ pora. „Android SDK“ taip pat yra „Pair“ klasė. Labiausiai mane nustebino tai, kad egzistuoja „JavaFX 2.0“ javafx.util.Pair klasė.
Paketo ir klasės pavadinimas dažniausiai siūlomas SDK versijai Pora
klasė buvo java.util.Pora
ir „JavaFX“ versija yra panaši į paketo pavadinimą: javafx.util.Pora
. Paleidus „javap“ prieš šią klasę „JavaFX SDK“, gaunama ši išvestis.
Sudaryta iš „Pair.java“ viešosios klasės javafx.util.Pair {public K getKey (); public V getValue (); viešoji javafx.util.Pora (K, V); viešas java.lang.String toString (); public int hashCode (); viešoji loginė reikšmė lygi (java.lang.Object); }
Kaip aukščiau javap
išvestis rodo, kad tai gana paprasta klasė su pagrindiniu parametruojamu konstruktoriumi, „get“ metodais raktui ir reikšmės dalims Pora
ir „įprasti“ metodai toString ()
, lygus (objektas)
ir hashCode ()
. Kitas kodų sąrašas parodo, kaip naudojant parametruojamą konstruktorių raktas ir vertė pateikiami kiekvienam Pora
kad yra akimirksniu.
/ ** * Pateikite garsių porų kolekciją. * * @return Garsių porų kolekcija. * / privati statinė kolekcija createFamousPairs () {galutinis rinkinys poros = naujas „ArrayList“(); poros.add (nauja pora ("Yin", "Yang")); pairs.add (nauja pora („Veiksmas“, „Reakcija“)); pairs.add (nauja pora ("Druska", "Pipiras")); poros.add (nauja pora ("Starsky", "Hutch")); poros.add (nauja pora ("Lapė", "Mulderis")); poros.add (nauja pora („Betmenas“, „Robinas“)); poros.add (nauja pora („Fred Astaire“, „Ginger Rogers“)); pairs.add (nauja pora ("Flotsam", "Jetsam")); poros.add (nauja pora ("Brutus", "Nero")); poros.add (nauja Pora („Tomas“, „Džeris“)); poros.add (nauja pora ("Jekyll", "Hyde")); poros.add (nauja pora („Holmes“, „Watson“)); poros.add (nauja pora ("Mario", "Luigi")); poros.add (nauja pora („Pinky“, „Smegenys“)); pairs.add (nauja pora („Wallace“, „Gromit“)); grąžinti poras; }
Prieiga prie kiekvieno rakto ir vertės Pora
taip pat lengva, kaip parodyta kitame kodo pavyzdyje.
/ ** * Parašykite pateiktą porų rinkinį į standartinę išvestį. * * @param title Išvesties, parašytos standartine išvestimi, pavadinimas. * „@param“ poros „ToPrint“ poros turi būti įrašytos į standartinę išvestį. * / private static void writeCollectionOfPairs (galutinis eilutės pavadinimas, galutinis rinkinys pairsToPrint) {out.println (pavadinimas + ":"); for (final Pair pair: pairasToPrint) {out.println ("\ t" + pair.getKey () + "ir" + pair.getValue ()); }}
Aukščiau pateiktas pavyzdys yra gana sugalvotas, tačiau galima teigti, kad jis yra efektyviausias Pora
nes šiame konkrečiame pavyzdyje tai yra „poros“ sąvoka. Vienas didžiausių nusiskundimų dėl pridėjimo Pora
SDK ar apskritai jį naudoti yra tai, kad jis nėra įvardytas pakankamai konkrečiai, kad apimtų objekto egzistavimo verslo tikslą. Aš iš tikrųjų galvojau apie „JavaFX“ naudojimą Pora
klasę, kai parašiau savo eglutės pavyzdį įrašui „JavaFX 2.0 Christmas Tree“ („JavaFX 2.0 Shapes“). Aš galų gale nusprendžiau prieš tai ir panaudojau tinkamiau pavadintą lizdą Koordinuoti
klasė. Tačiau aš galėjau lengvai pasinaudoti Pora
tame pavyzdyje. Kitame kodų sąraše yra tas pats pavyzdys su įdėtomis Koordinuoti
klasė pašalinta, o nuorodos į ją pakeistos Pora
.