Di bawah ini adalah nilai-nilai yang terkandung di dalam HashMap
statusName {Active=33, Renewals Completed=3, Application=15}
Kode Java untuk mendapatkan Kunci pertama (yaitu Aktif)
Object myKey = statusName.keySet().toArray()[0];
Bagaimana kita bisa mengumpulkan "Nilai" Kunci pertama (yaitu 33), saya ingin menyimpan "Kunci" dan "Nilai" dalam variabel terpisah.
HashMap
entri tidak berurutan, sehingga "pertama" dapat berubah setiap kali Anda memodifikasi peta?HashMap
? Jika Anda memodifikasinya sama sekali, Anda mungkin mendapatkan hasil dalam urutan yang sama sekali berbeda.Jawaban:
Anda dapat mencoba ini:
Perlu diingat,
HashMap
tidak menjamin urutan penyisipan. Gunakan aLinkedHashMap
untuk menjaga agar pesanan tetap utuh.Misalnya:
Keluaran:
sumber
com.google.gson.internal.LinkedTreeMap cannot be cast to...
... kelas saya yang saya nyatakan alih-alihString
di tempat yang benar ... tidak dapat menemukan jawaban online .. bantuanGson
to convert value object menjadi aString
dan kemudian menguraikannya kembali ke tipe kelas saya. Ini jelek tetapi saya benar-benar tidak dapat menemukan solusi lain untuk sesuatu yang sangat mudah dilakukan dalam bahasa lain (saya belajar Java sekarang)Untuk mendapatkan nilai "pertama":
Untuk mendapatkan nilai kunci "pertama":
Catatan: Kode di atas diuji dan berfungsi.
Saya mengatakan "pertama" karena entri HashMap tidak dipesan.
Namun, LinkedHashMap mengulang entri dalam urutan yang sama seperti saat dimasukkan - Anda dapat menggunakannya untuk implementasi peta Anda jika urutan penyisipan penting.
sumber
Cara melakukan Java 8,
String firstKey = map.keySet().stream().findFirst().get();
sumber
Anda juga dapat mencoba ini untuk mendapatkan seluruh entri pertama,
Ini untuk mendapatkan hanya kunci entri pertama,
Ini untuk mendapatkan hanya nilai entri pertama,
Selain itu, jika Anda tahu apa yang Anda lakukan dan Anda ingin mendapatkan item kedua (sama untuk ketiga dll) dari sebuah peta, Anda harus mencoba ini,
sumber
Dengan menggunakan
youMap.get(keyYouHave)
, Anda bisa mendapatkan nilainya.Ya, Anda dapat menetapkannya ke variabel.
Tunggu ......... ini belum berakhir.
Jika Anda (logika bisnis) bergantung pada urutan penyisipan dan pengambilan, Anda akan melihat hasil yang aneh. Peta tidak dipesan, mereka tidak akan menyimpan dalam urutan. Harap perhatikan fakta itu. Gunakan beberapa alternatif untuk mempertahankan pesanan Anda. Mungkin a
LinkedHashMap
sumber
Perhatikan bahwa Anda harus mencatat bahwa aliran logika Anda tidak boleh bergantung pada pengaksesan
HashMap
elemen dalam beberapa urutan, sederhananya karenaHashMap
s tidak diurutkanCollection
dan bukan itu yang dimaksudkan untuk dilakukan. (Anda dapat membaca lebih lanjut tentang koleksi odered dan sorter di posting ini ).Kembali ke posting, Anda sudah melakukan setengah pekerjaan dengan memuat kunci elemen pertama:
Panggil saja
map.get(key)
untuk mendapatkan nilainya masing-masing:sumber
Ingatlah bahwa urutan penyisipan tidak dipatuhi di peta secara umum. Coba ini :
Saya menggunakan ini hanya jika saya yakin akan hal itu
map.size() == 1
.sumber
Meningkatkan jawaban whoami. Sejak
findFirst()
mengembalikan sebuahOptional
, adalah praktik yang baik untuk memeriksa apakah ada nilai.Juga, beberapa berkomentar bahwa menemukan kunci pertama dari a
HashSet
tidak dapat diandalkan. Tapi terkadang kami memilikiHashMap
pasangan; yaitu di setiap peta kami memiliki satu kunci dan satu nilai. Dalam kasus seperti itu, menemukan kunci pertama dari pasangan semacam itu dengan cepat sangatlah mudah.sumber
Juga cara yang bagus untuk melakukan ini :)
sumber
Anda juga dapat mencoba di bawah ini:
sumber