Saya memiliki Hashmap di Jawa seperti ini:
private Map<String, Integer> team1 = new HashMap<String, Integer>();
Maka saya mengisinya seperti ini:
team1.put("United", 5);
Bagaimana saya bisa mendapatkan kunci? Sesuatu seperti: team1.getKey()
mengembalikan "Bersatu".
java
data-structures
java-6
masb
sumber
sumber
team1.getKey()
untuk kembali jika: (1) peta kosong, atau (2) jika berisi beberapa kunci?int
harus digunakan untuk yang lajang seperti ini.Jawaban:
A
HashMap
mengandung lebih dari satu kunci. Anda dapat menggunakankeySet()
untuk mendapatkan set semua kunci.akan menyimpan
1
dengan kunci"foo"
dan2
dengan kunci"bar"
. Untuk beralih ke semua kunci:akan mencetak
"foo"
dan"bar"
.sumber
List<String> keys = new ArrayList<>(mLoginMap.keySet());
Ini bisa dilakukan, setidaknya secara teori, jika Anda tahu indeksnya:
keySet()
mengembalikan set, jadi Anda mengonversi set ke array.Masalahnya, tentu saja, satu set tidak berjanji untuk menjaga pesanan Anda. Jika Anda hanya memiliki satu item di HashMap Anda, Anda baik, tetapi jika Anda memiliki lebih dari itu, yang terbaik adalah mengulang-ulang peta, seperti yang dilakukan jawaban lain.
sumber
HashMap
. Pertunjukan yang bagus.Periksa ini.
https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html
(Gunakan
java.util.Objects.equals
karena HashMap dapat berisinull
)Menggunakan JDK8 +
Lebih "generik" dan seaman mungkin
Atau jika Anda menggunakan JDK7.
sumber
HashMap
kunci unik.Anda dapat mengambil semua
Map
kunci menggunakan metodekeySet()
. Sekarang, jika yang Anda butuhkan adalah mendapatkan kunci yang diberikan nilainya , itu masalah yang sama sekali berbeda danMap
tidak akan membantu Anda di sana; Anda memerlukan struktur data khusus, sepertiBidiMap
(peta yang memungkinkan pencarian dua arah antara kunci dan nilai) dari Koleksi Commons Apache - juga perlu diketahui bahwa beberapa kunci berbeda dapat dipetakan dengan nilai yang sama.sumber
Karena Anda ingin mendapatkan argumen (
United
) yang nilainya diberikan (5
), Anda mungkin juga mempertimbangkan untuk menggunakan peta dua arah (misalnya disediakan oleh Guava: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google /common/collect/BiMap.html ).sumber
Jika Anda hanya memerlukan sesuatu yang sederhana dan lebih banyak verifikasi.
Kemudian Anda dapat mencari kunci apa saja.
sumber
sumber
next()
dua kali dalam loop berarti Anda akan mencetak kunci bernomor ganjil bersama dengan nilai genap.Gunakan operasi fungsional untuk iterasi yang lebih cepat.
team1.keySet().forEach((key) -> { System.out.println(key); });
sumber
Sebuah solusi dapat, jika Anda mengetahui posisi kunci, mengubah kunci menjadi array String dan mengembalikan nilai di posisi:
sumber
Coba program sederhana ini:
sumber
sumber
Untuk mendapatkan kunci di HashMap, Kami memiliki metode keySet () yang ada dalam
java.util.Hashmap
paket. mis:Sekarang kunci akan memiliki semua kunci Anda tersedia di peta. mis: [key1, key2]
sumber
java,util.HashMap
adalah kelas, bukan paket, dan tidak ada di sini yang tidak ada di sini lima tahun yang lalu.Apa yang akan saya lakukan yang sangat sederhana tetapi buang memori adalah memetakan nilai dengan kunci dan melakukan sebaliknya untuk memetakan kunci dengan nilai yang membuat ini:
private Map<Object, Object> team1 = new HashMap<Object, Object>();
Sangat penting bahwa Anda menggunakan
<Object, Object>
sehingga Anda dapat memetakankeys:Value
danValue:Keys
menyukai initeam1.put("United", 5);
team1.put(5, "United");
Jadi, jika Anda menggunakan
team1.get("United") = 5
danteam1.get(5) = "United"
Tetapi jika Anda menggunakan beberapa metode khusus pada salah satu objek dalam pasangan saya akan lebih baik jika Anda membuat peta lain:
private Map<String, Integer> team1 = new HashMap<String, Integer>();
private Map<Integer, String> team1Keys = new HashMap<Integer, String>();
lalu
team1.put("United", 5);
team1Keys.put(5, "United");
dan ingat, tetap sederhana;)
sumber
Untuk mendapatkan Key dan nilainya
misalnya
Akan mencetak: Kunci: United Nilai: 5 Kunci: Barcelona Nilai: 6
sumber