Pair Class Datang ke Java melalui JavaFX?

Kelas berpasangan tidak asing bagi kita yang telah menggunakan C ++ untuk waktu yang cukup lama. Meskipun telah ada pembicaraan untuk menambahkannya ke Java sebagai bagian standar SDK, ini adalah topik yang agak kontroversial. Beberapa orang telah memintanya secara resmi dan bug bahkan telah diajukan (4947273, 4983155, dan 6229146) untuk mendapatkannya di Java. Dalam sebuah posting yang menanyakan pertanyaan Do we want a java.util.Pair ?, Alex Miller melakukan pekerjaan yang bagus untuk mencakup kedua sisi masalah.

Sudah ada implementasi Pairatau Pair-seperti yang setara di luar sana untuk Java. Selain jumlah kustom yang tidak diketahui dalam basis kode lokal, ada contoh yang tersedia untuk umum seperti yang disediakan oleh Post Java Pair Class, contoh yang disediakan di thread StackOverflow, Pasangan Generik Ideograph, dan (tidak mengherankan) Pair Java Tuples. Android SDK juga dilengkapi kelas Pair. Salah satu yang paling mengejutkan saya adalah keberadaan kelas javafx.util.Pair JavaFX 2.0.

Paket dan nama kelas paling sering diusulkan untuk versi SDK dari Pairkelas telah java.util.Pairdan versi JavaFX mirip nama paket: javafx.util.Pair. Menjalankan javap pada kelas ini di JavaFX SDK, menghasilkan keluaran berikut.

Compiled from "Pair.java" public class 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); } 

Seperti di atas javapoutput menunjukkan, ini adalah kelas yang relatif sederhana dengan konstruktor parameter dasar, "mendapatkan" metode untuk kunci dan nilai bagian dari Pair, dan metode "umum" toString(), equals(Object)dan hashCode(). Daftar kode berikutnya mendemonstrasikan penggunaan konstruktor berparameter untuk memberikan kunci dan nilai ke setiap instance Pairyang dibuat.

 /** * Provide a collection of famous pairs. * * @return Collection of famous pairs. */ private static Collection
    
      createFamousPairs() { final Collection
     
       pairs = new ArrayList
      
       (); pairs.add(new Pair("Yin", "Yang")); pairs.add(new Pair("Action", "Reaction")); pairs.add(new Pair("Salt", "Pepper")); pairs.add(new Pair("Starsky", "Hutch")); pairs.add(new Pair("Fox", "Mulder")); pairs.add(new Pair("Batman", "Robin")); pairs.add(new Pair("Fred Astaire", "Ginger Rogers")); pairs.add(new Pair("Flotsam", "Jetsam")); pairs.add(new Pair("Brutus", "Nero")); pairs.add(new Pair("Tom", "Jerry")); pairs.add(new Pair("Jekyll", "Hyde")); pairs.add(new Pair("Holmes", "Watson")); pairs.add(new Pair("Mario", "Luigi")); pairs.add(new Pair("Pinky", "The Brain")); pairs.add(new Pair("Wallace", "Gromit")); return pairs; } 
      
     
    

Mengakses kunci dan nilai masing-masing Pairjuga mudah seperti yang ditunjukkan pada contoh kode berikutnya.

 /** * Write provided collection of pairs to standard output. * * @param title Title for output written to standard output. * @param pairsToPrint Pairs to be written to standard output. */ private static void writeCollectionOfPairs( final String title, final Collection
    
      pairsToPrint) { out.println(title + ":"); for (final Pair pair : pairsToPrint) { out.println("\t" + pair.getKey() + " and " + pair.getValue()); } } 
    

Contoh di atas relatif dibuat-buat, tetapi dapat dikatakan sebagai penggunaan yang paling efektif Pairkarena, dalam contoh khusus itu, sebenarnya konsep "pasangan" yang diwakili. Salah satu keluhan terbesar tentang menambahkan Pairke SDK atau menggunakannya secara umum adalah bahwa nama itu tidak cukup spesifik untuk mencakup tujuan bisnis keberadaan suatu objek. Saya sebenarnya telah berpikir untuk menggunakan Pairkelas JavaFX ketika saya menulis contoh Pohon Natal saya untuk posting Pohon Natal JavaFX 2.0 (Bentuk JavaFX 2.0). Saya akhirnya memutuskan untuk tidak melakukannya dan menggunakan Coordinatekelas bersarang dengan nama yang lebih tepat . Namun, saya bisa dengan mudah menggunakan Paircontoh itu. Daftar kode berikutnya berisi contoh itu dengan Coordinatekelas bersarang dihapus dan referensi ke sana diganti denganPair.