gpt4 book ai didi

java - 在 HashMap 中使用键检索值而不使用迭代器

转载 作者:行者123 更新时间:2023-12-02 12:08:08 25 4
gpt4 key购买 nike

我想根据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();
}
}
}

我不想让我的应用程序变慢。因此,我更喜欢在 key 的帮助下直接检索值,而不使用迭代器或 for 循环。我怎样才能实现这个目标?

如果有帮助,我们将不胜感激。

最佳答案

我认为不可能直接执行此操作,但您可以对整个 map 进行初始传递,并将其转换为使用刺键作为键的 map 。至少这样你只需要迭代整个值集一次。

因此,如果您使用类似的方法

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");

假设键在大小写方面是唯一的。

关于java - 在 HashMap 中使用键检索值而不使用迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46740894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com