EnumMap<K extends Enum<K>, V>
di Jawa jelas dipesan berdasarkan definisi enum yang terkait, seperti yang juga dapat Anda lihat di javadoc:
Peta Enum dipertahankan dalam urutan kuncinya (urutan penetapan konstanta enum). Hal ini tercermin dalam iterator dikembalikan oleh pandangan koleksi ( keySet()
, entrySet()
, dan values()
).
Yang saya butuhkan adalah SortedMap
menggunakan enum sebagai tipe kunci. Saya ingin menggunakan metode seperti headMap()
atau firstKey()
, tapi saya ingin mendapat untung dari penambahan kinerja cpu + memori EnumMap
s. Sebuah TreeMap
suara seperti terlalu banyak overhead di sini.
Pertanyaan : apakah ini baru saja terlewatkan dalam implementasi, apakah kemalasan (berasal dari AbstractMap
) atau ada alasan bagus mengapa EnumMap
tidak SortedMap
?
TreeMap
?Jawaban:
Ini tidak akan membuat jawaban untuk pertanyaan utama Anda (karena hanya desainer asli yang memiliki jawaban), tetapi satu pendekatan yang saya pertimbangkan adalah untuk Anda menerapkannya sendiri. Ketika mencoba untuk membuat
SortedMap
implementasi berdasarkanEnumMap
, saya datang dengan kelas berikut.Ini jelas merupakan implementasi yang cepat dan kotor (dan perhatikan bahwa itu tidak sepenuhnya sesuai dengan
SortedMap
- karena persyaratan tampilan tidak terpenuhi), tetapi jika Anda membutuhkannya , Anda dapat memperbaikinya:Dan untuk pengujian cepat (bug belum ditemukan):
Saya mendapat:
sumber
Buka permintaan fitur
Saya dapat menemukan masalah ini untuk OpenJDK . Itu dari tahun 2005 namun masih terbuka / belum terselesaikan.
Saya berasumsi tidak ada "alasan bagus" untuk ini tidak diterapkan.
sumber