Saya perlu memeriksa apakah sebuah peta berisi salah satu kunci dari daftar, dan jika ya, maka kembalikan nilai pertama yang cocok. Pendekatan naif yang terlintas di benak saya adalah melakukannya dalam dua perulangan bersarang:
Map<String, String> fields = new HashMap<String, String>();
fields.put("a", "value a");
fields.put("z", "value z");
String[] candidates = "a|b|c|d".split("|");
for (String key : fields.keySet()){
for (String candidate : candidates) {
if (key.equals(candidate)){
return fields.get(key);
}
}
}
Apakah ada cara yang lebih baik dan lebih efisien, mungkin dengan menggunakan pustaka standar Java?
for(String candidate : candidates) {
if(fields.containsKey(candidate)) {
return fields.get(candidate)
}
}
cara terbaik jika nilai nol mungkin ada di dalam peta, dan jika hanya kunci pertama yang terdeteksi yang diperlukan.
Tentunya sesuatu seperti:
for (String candidate : candidates) {
String result = fields.get(key);
if (result != null) {
return result;
}
}
Di atas hanya melakukan pencarian satu peta per kandidat kunci. Ini menghindari pengujian terpisah untuk keberadaan plus ekstraksi, karena mengekstraksi kunci yang tidak ada hanya akan memberi Anda nilai nol. Perhatikan (terima kasih Slanec) bahwa nilai null untuk kunci yang valid tidak dapat dibedakan dari kunci yang tidak ada untuk solusi ini.
Saya tidak begitu mengerti mengapa Anda melakukan konversi huruf besar-kecil.
Saya ambil:
Map<String, String> fields = new HashMap<String, String>();
fields.put("a", "value a");
fields.put("z", "value z");
String[] candidates = "a|b|c|d".split("|");
for (String candidate : candidates) {
if (fields.containsKey(candidate)) {
return fields.get(candidate);
}
}