[英]Retrieve value using key without using iterator in HashMap
我想基於HashMap的鍵來檢索值。 我可以使用下面的代碼從哈希圖中獲取基於鍵的值。 我得到了完美的結果。 我認為每次循環獲取1000多個記錄中的值都不是一個好主意。 這會使應用程序變慢。
這是帶有for循環的一堆代碼。
HashMap<Integer, LabelModel> labelHashMap = gson.fromJson(storedHashMapString, type);
for(Map.Entry<Integer, LabelModel> entry:labelHashMap.entrySet())
{
LabelModel label = entry.getValue();
key = label.getKey();
if(key != null && !key.isEmpty())
{
if(key.equalsIgnoreCase("please_select_governorate"))
{
english_label = label.getEnglish();
arabic_label = label.getArabic();
}
}
}
我不想讓我的應用程序變慢。 因此,我寧願直接在鍵的幫助下檢索值,而無需使用迭代器或for循環。 我該如何實現?
幫助將不勝感激。
我不認為可以直接執行此操作,但是您可以對整個地圖進行初始遍歷,然后將其轉換為使用鍵作為鍵的地圖。 至少通過這種方式,您只需要遍歷整個值一次即可。
因此,如果您使用類似
Map<String, LabelModel> reIndex(HashMap<Integer, LabelModel> labelMap) {
Map<String, LabelModel> reIndexedLabelMap = new HashMap<>();
for(Map.Entry<Integer, LabelModel> entry:labelMap.entrySet()) {
LabelModel label = entry.getValue();
String key = label.getKey();
reIndexedLabelMap.put(key.toLowerCase(), label);
}
return reIndexedLabelMap;
}
然后,您可以使用此新對象通過其String鍵快速獲取其他標簽:
Map<String, LabelModel> reIndexed = reIndex(labeHashlMap);
reIndexed.get("please_select_governorate");
reIndexed.get("what_ever_else");
假定鍵相對於大小寫是唯一的。
if(labelHashMap.get("something") != null){ code }
如果嘗試使用不存在的鍵獲取值,則哈希映射將僅返回null。
我認為您應該進行初始遍歷,即遍歷JSON。 因為從JSON到HashMap的映射也是迭代的,所以可以避免。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.