Προγραμματισμός

Pair Class Ερχόμενοι στην Java μέσω JavaFX;

Η κατηγορία ζευγών είναι γνωστή σε όσους από εμάς έχουν χρησιμοποιήσει το C ++ για οποιοδήποτε μεγάλο χρονικό διάστημα. Παρόλο που έχει γίνει λόγος να το προσθέσετε στην Java ως τυπικό μέρος του SDK, είναι ένα κάπως αμφιλεγόμενο θέμα. Αρκετοί άνθρωποι το ζήτησαν επίσημα και έχουν υποβληθεί σφάλματα ακόμη και (4947273, 4983155 και 6229146) για να το αποκτήσουν στην Java. Σε μια ανάρτηση που θέτει την ερώτηση Θέλουμε ένα java.util.Pair ;, Ο Άλεξ Μίλερ κάνει καλή δουλειά να καλύψει και τις δύο πλευρές του ζητήματος.

Υπάρχουν ήδη υλοποιήσεις του Ζεύγος ή α Ζεύγος-όμοιο ισοδύναμο εκεί έξω για Java. Εκτός από τον άγνωστο αριθμό προσαρμοσμένων σε τοπικές βάσεις κώδικα, υπάρχουν διαθέσιμα στο κοινό παραδείγματα, όπως αυτά που παρέχονται από την τάξη Java Pair Class, παραδείγματα που παρέχονται σε ένα νήμα StackOverflow, το Ideograph's Generic Pair και (δεν αποτελεί έκπληξη) το Java Tuples's Pair. Το Android SDK διαθέτει επίσης κατηγορία Pair. Αυτό που με εξέπληξε περισσότερο είναι η ύπαρξη της τάξης javafx.util.Pair του JavaFX 2.0.

Το όνομα πακέτου και τάξης που προτείνεται συχνότερα για μια έκδοση SDK του Ζεύγος τάξη ήταν java.util.Pair και η έκδοση JavaFX είναι παρόμοια στο όνομα του πακέτου: javafx.util.Pair. Η εκτέλεση javap σε αυτήν την κλάση στο JavaFX SDK, οδηγεί στην ακόλουθη έξοδο.

Συντάχθηκε από τη δημόσια τάξη "Pair.java" javafx.util.Pair {public K getKey (); δημόσια V getValue (); δημόσια javafx.util.Pair (K, V); δημόσια java.lang.String toString (); δημόσιο int hashCode (); δημόσια boolean ισούται με (java.lang.Object); } 

Όπως τα παραπάνω javap Η έξοδος υποδεικνύει ότι πρόκειται για μια σχετικά απλή κατηγορία με βασικό παραμετροποιημένο κατασκευαστή, μεθόδους "get" για τα τμήματα κλειδιών και Ζεύγος, και "κοινές" μεθόδους toString (), ισούται με (αντικείμενο), και hashCode (). Η επόμενη λίστα κωδικών δείχνει τη χρήση του παραμετροποιημένου κατασκευαστή για την παροχή του κλειδιού και της τιμής σε κάθε παρουσία του Ζεύγος αυτό αποδεικνύεται.

 / ** * Παρέχετε μια συλλογή από διάσημα ζευγάρια. * * @return Συλλογή διάσημων ζευγαριών. * / ιδιωτική στατική συλλογή createFamousPairs () {τελική συλλογή ζεύγη = νέα ArrayList(); pairs.add (νέο ζεύγος ("Yin", "Yang")); pairs.add (νέο ζεύγος ("Action", "Reaction")); pairs.add (νέο ζεύγος ("αλάτι", "πιπέρι")); pairs.add (νέο ζεύγος ("Starsky", "Hutch")); pairs.add (νέο ζεύγος ("Fox", "Mulder")); pairs.add (νέο ζεύγος ("Batman", "Robin")); pairs.add (νέο ζεύγος ("Fred Astaire", "Ginger Rogers")); pairs.add (νέο ζεύγος ("Flotsam", "Jetsam")); pairs.add (νέο ζεύγος ("Brutus", "Nero")); pairs.add (νέο ζεύγος ("Tom", "Jerry")); pairs.add (νέο ζεύγος ("Jekyll", "Hyde")); pairs.add (νέο ζεύγος ("Holmes", "Watson")); pairs.add (νέο ζεύγος ("Mario", "Luigi")); pairs.add (νέο ζεύγος ("Pinky", "The Brain")); pairs.add (νέο ζεύγος ("Wallace", "Gromit")); ζεύγη επιστροφής; } 

Πρόσβαση στο κλειδί και την τιμή του καθενός Ζεύγος είναι επίσης εύκολο όπως φαίνεται στο επόμενο δείγμα κώδικα.

 / ** * Γράψτε την παρεχόμενη συλλογή ζευγών σε τυπική έξοδο. * * @param title Τίτλος για έξοδο γραμμένο σε τυπική έξοδο. * @param pairsToPrint Pairs για εγγραφή σε τυπική έξοδο. * / private static void writeCollectionOfPairs (τελικός τίτλος συμβολοσειράς, τελική συλλογή pairToPrint) {out.println (τίτλος + ":"); για (τελικό ζεύγος ζευγαριού: pairToPrint) {out.println ("\ t" + pair.getKey () + "και" + pair.getValue ()); }} 

Το παραπάνω παράδειγμα είναι σχετικά επινοημένο, αλλά θα μπορούσε να υποστηριχθεί ότι είναι η πιο αποτελεσματική χρήση του Ζεύγος γιατί, σε αυτό το συγκεκριμένο παράδειγμα, είναι πραγματικά μια έννοια "ζεύγους" που εκπροσωπείται. Ένα από τα μεγαλύτερα παράπονα σχετικά με την προσθήκη Ζεύγος στο SDK ή η χρήση του γενικά είναι ότι δεν ονομάζεται αρκετά συγκεκριμένο για να καλύψει τον επιχειρηματικό σκοπό για την ύπαρξη ενός αντικειμένου. Στην πραγματικότητα είχα σκεφτεί να χρησιμοποιήσω το JavaFX Ζεύγος τάξη όταν έγραψα το χριστουγεννιάτικο δέντρο μου για την ανάρτηση JavaFX 2.0 Christmas Tree (JavaFX 2.0 Shapes). Κατέληξα να αποφασίσω εναντίον αυτού και χρησιμοποίησα μια πιο κατάλληλη ονομασία ένθετη Συντεταγμένη τάξη. Ωστόσο, θα μπορούσα να χρησιμοποιώ εύκολα Ζεύγος σε αυτό το παράδειγμα. Η επόμενη λίστα κώδικα περιέχει το ίδιο παράδειγμα με το ένθετο Συντεταγμένη η τάξη καταργήθηκε και οι αναφορές σε αυτήν αντικαταστάθηκαν από Ζεύγος.