公共用户 getUserEntryFromIdKey(字符串 id){
for (Map.Entry<Integer, User> entry : userMap.entrySet()) {
if (entry.getKey().matches(id)) {
return entry.getValue();
}
}
return null;
}
迭代超过 50K 记录的地图值的有效方法。不希望 for 循环运行 50K 次来找到一个值。
假设需要使用正则表达式或一些复杂的条件来匹配键。在这种情况下,您应该考虑重新考虑键的结构,或者可能使用辅助数据结构根据可搜索条件对键进行索引。
否则就做
userMap.getOrDefault(Integer.parseInt(id), null);
。
Map
,你应该利用它的结构,并直接跳转到由它的键(它的 User
)映射的值(a id
)。
您基本上将
Map
视为 List
,以 O(n)
的复杂度迭代其所有元素,然后找到所需的 User
。只需使用 get()
方法并返回与其 id 关联的 User
。
public User getUserEntryFromIdKey(String id) {
return userMap.get(id);
}