Saya sedang mencari implementasi peta dua arah di Jawa, dan menemukan dua perpustakaan ini:
- Google Guava (sebelumnya "Google Collections")
- Koleksi Apache Commons
Keduanya gratis, memiliki implementasi peta dua arah yang saya cari (BidiMap di Apache, BiMap di Google), ukurannya hampir sama (Apache 493 kB, Google 499 kB) [ed .: tidak lagi benar!] Dan sepertinya dalam segala hal sangat mirip dengan saya.
Yang mana yang harus saya pilih, dan mengapa? Apakah ada beberapa alternatif lain yang setara (harus gratis dan memiliki setidaknya peta dua arah)? Saya sedang bekerja dengan Java SE terbaru, jadi tidak perlu membatasi secara artifisial ke Java 5 atau semacamnya.
java
collections
apache-commons
guava
Joonas Pulakka
sumber
sumber
Jawaban:
Menurut pendapat saya, pilihan yang lebih baik adalah Guava (sebelumnya dikenal sebagai koleksi Google):
CacheBuilder
dan itu pendahulunyaMapMaker
luar biasaApache Commons Collections adalah pustaka yang bagus juga, tetapi telah lama gagal menyediakan versi yang diaktifkan secara generik (yang merupakan kelemahan utama untuk API koleksi menurut saya) dan umumnya tampaknya dalam pemeliharaan / jangan-lakukan -too-much-work-on-it mode Baru-baru ini Koleksi Commons telah mengambil beberapa uap lagi, tetapi memiliki beberapa penangkapan untuk dilakukan. .
Jika ukuran unduhan / memori jejak / ukuran kode adalah masalah maka Apache Commons Collections mungkin menjadi kandidat yang lebih baik, karena itu adalah ketergantungan umum dari perpustakaan lain. Karena itu menggunakannya dalam kode Anda sendiri juga berpotensi dilakukan tanpa menambahkan dependensi tambahan. Sunting: "Keuntungan" khusus ini telah sebagian ditumbangkan sekarang, karena banyak perpustakaan baru benar-benar bergantung pada Guava dan bukan pada Koleksi Apache Commons.
sumber
Dari faq: FAQ Google Collections
sumber
Hal terpenting yang saya temukan yang menjadikan Google Collections tempat untuk memulai:
Berikut adalah video Youtube yang luar biasa dari ceramah yang diberikan oleh penulis utama dan ia melakukan pekerjaan yang baik untuk membahas apa yang perlu diketahui tentang perpustakaan ini.
sumber
Dua hal lain (saya harap saya tidak salah)
sumber
git clone https://code.google.com/p/guava-libraries/
dangit checkout v11.0.2
?Satu hal buruk tentang Guava adalah bahwa Multimap tidak memperpanjang java.util.Map. Jika Anda memiliki metode Anda sendiri yang berfungsi pada Maps, mereka tidak akan berfungsi pada Guava Multimaps (antarmuka Apache MultiMap memperluas java.util.Map). Saya yakin ada beberapa alasan bagus mengapa memang seperti itu tetapi juga tidak nyaman.
sumber
Multimap
likeMap
, selalu adaasMap()
tampilan.Map
, dengan pemahaman bahwa setiap referensiV
akan benar-benar menjadiCollection<V>
, saya pikir Anda akan melihat dengan cepat mengapa itu bukan superinterface yang bagus untukMultimap<K, V>
.