Το ζεύγος, ή ζεύγος, παρέχει έναν βολικό τρόπο χειρισμού απλών συσχετίσεων κλειδιού-τιμής, ο οποίος είναι ιδιαίτερα χρήσιμος όταν θέλουμε να επιστρέψουμε δύο τιμές από μια μέθοδο. Το JDK συνοδεύεται από εσωτερικές: AbstractMap.SimpleEntry και AbstractMap.SimpleImmutableEntry
1. Το SimpleEntry ορίζεται στην αφηρημένη κλάση AbstractMap και η μέθοδος κατασκευής του είναι παρόμοια με αυτή του Pair.
2. Η κλάση AbstractMap περιέχει επίσης μια ένθετη κλάση, η οποία αντιπροσωπεύει ένα αμετάβλητο ζεύγος: την κλάση SimpleImmutableEntry.
/** * Μια καταχώρηση που διατηρεί ένα αμετάβλητο κλειδί και αξία. Αυτή η τάξη * δεν υποστηρίζει τη μέθοδο <tt>setValue</tt>. Η τάξη αυτή μπορεί να * βολικό σε μεθόδους που επιστρέφουν στιγμιότυπα ασφαλή για νήματα * αντιστοιχίσεις κλειδιού-τιμής. * * @since 1,6 */ δημόσια στατική κλάση SimpleImmutableEntry<K,V> υλοποιεί το Entry<K,V>, java.io.Serializable { ιδιωτικό στατικό τελικό μακρύ σειριακόVersionUID = 7138329143949025153L;
ιδιωτικό τελικό κλειδί K. ιδιωτική τελική τιμή V·
/** * Δημιουργεί μια καταχώρηση που αντιπροσωπεύει μια αντιστοίχιση από το καθορισμένο * κλειδί για την καθορισμένη τιμή. * * @param κλειδί το κλειδί που αντιπροσωπεύεται από αυτήν την καταχώρηση * @param τιμή της τιμής που αντιπροσωπεύεται από αυτήν την καταχώρηση */ public SimpleImmutableEntry(κλειδί K, τιμή V) { this.key = κλειδί; this.value = τιμή; }
/** * Δημιουργεί μια καταχώρηση που αντιπροσωπεύει την ίδια αντιστοίχιση με το * Καθορισμένη καταχώρηση. * * @param εισαγάγετε την καταχώριση για αντιγραφή */ public SimpleImmutableEntry(Entry<? extend K, ? extend V> entry) { this.key = entry.getKey(); this.value = entry.getValue(); }
/** * Επιστρέφει το κλειδί που αντιστοιχεί σε αυτήν την καταχώρηση. * * @return το κλειδί που αντιστοιχεί σε αυτήν την καταχώρηση */ public K getKey() { κλειδί επιστροφής? }
/** * Επιστρέφει την τιμή που αντιστοιχεί σε αυτήν την καταχώρηση. * * @return την τιμή που αντιστοιχεί σε αυτήν την εγγραφή */ public V getValue() { επιστρεφόμενη τιμή; }
/** * Αντικαθιστά την τιμή που αντιστοιχεί σε αυτήν την καταχώριση με την καθορισμένη * (προαιρετική λειτουργία). Αυτή η υλοποίηση απλώς ρίχνει * <tt>UnsupportedOperationException</tt>, όπως υλοποιεί αυτή η κλάση * μια <i>αμετάβλητη</i> καταχώριση χάρτη. * * @param τιμή νέα τιμή που θα αποθηκευτεί σε αυτήν την καταχώρηση * @return (Δεν επιστρέφει) * @throws UnsupportedOperationException πάντα */ public V setValue(τιμή V) { ρίξε νέα UnsupportedOperationException(); }
/** * Συγκρίνει το καθορισμένο αντικείμενο με αυτήν την καταχώρηση για ισότητα. * Επιστροφές {@codetrue} εάν το δεδομένο αντικείμενο είναι επίσης μια καταχώρηση χάρτη και * Οι δύο καταχωρήσεις αντιπροσωπεύουν την ίδια αντιστοίχιση. Πιο επίσημα, δύο * Οι καταχωρήσεις {@code e1} και {@code e2} αντιπροσωπεύουν την ίδια αντιστοίχιση *αν<pre> * (e1.getKey()==null ? * e2.getKey()==null : * e1.getKey().equals(e2.getKey())) * && * (e1.getValue()==null ? * e2.getValue()==null : * e1.getValue().equals(e2.getValue()))</pre> * Αυτό διασφαλίζει ότι η μέθοδος {@code ισούται με} λειτουργεί σωστά * διαφορετικές υλοποιήσεις της διεπαφής {@code Map.Entry}. * * @param o αντικείμενο που πρέπει να συγκριθεί για ισότητα με αυτήν την καταχώριση χάρτη * @return {@code true} εάν το καθορισμένο αντικείμενο είναι ίσο με αυτόν τον χάρτη *είσοδος * @see #hashCode */ public boolean equals(Αντικείμενο o) { αν (!( o instanceof Map.Entry)) επιστροφή ψευδής? Map.Entry<?,?> e = (Map.Entry<?,?>)o; επιστροφή eq(key, e.getKey()) &&; eq(value, e.getValue()); }
/** * Επιστρέφει την τιμή του κωδικού κατακερματισμού για αυτήν την καταχώρηση χάρτη. Ο κωδικός κατακερματισμού * μιας καταχώρισης χάρτη {@code e} ορίζεται ως εξής: <pre> * (e.getKey()==null ? 0 : e.getKey().hashCode()) ^ * (e.getValue()==null ? 0 : e.getValue().hashCode())</pre> * Αυτό διασφαλίζει ότι το {@code e1.equals(e2)} υπονοεί ότι * {@code e1.hashCode()==e2.hashCode()} για οποιεσδήποτε δύο καταχωρήσεις * {@code e1} και {@code e2}, όπως απαιτείται από τη γενική * σύμβαση της {@linkObject#hashCode}. * * @return την τιμή του κωδικού κατακερματισμού για αυτήν την καταχώρηση χάρτη * @see #equals */ public int hashCode() { return (κλειδί == null ? 0 : key.hashCode()) ^ (τιμή == null ? 0 : value.hashCode()); }
/** * Επιστρέφει μια αναπαράσταση συμβολοσειράς αυτής της καταχώρησης χάρτη. Αυτό * Η υλοποίηση επιστρέφει την αναπαράσταση συμβολοσειράς αυτού * Το κλειδί της καταχώρησης ακολουθούμενο από τον χαρακτήρα ίσον ("<tt>=</tt>") * ακολουθούμενη από την αναπαράσταση συμβολοσειράς της τιμής αυτής της καταχώρησης. * * @return μια αναπαράσταση συμβολοσειράς αυτής της καταχώρησης χάρτη */ public String toString() { κλειδί επιστροφής + "=" + τιμή. }
} Το SimpleImmutableEntry ρίχνει το java.lang εάν προσπαθήσει να τροποποιήσει την τιμή, καλώντας τη μέθοδο setValue.Μη υποστηριζόμενηΛειτουργίαΕξαίρεσηΑνώμαλος.
Κώδικας:
|