如何在Map键与Firebase手机号匹配时获取对应联系人名称?
修改方法以返回匹配手机号对应的联系人名称
我来帮你调整这个方法,让它返回匹配手机号对应的联系人名称,而不是仅仅返回手机号本身。这里有几个关键的改动点,同时我也会给你优化一下代码的类型安全性:
优化后的代码
import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; public static Collection<String> getMatchingContactNames(Map<String, String> contactMap, List<String> firebasePhoneNumbers) { // 从联系人Map中取出所有手机号键 Set<String> contactPhoneNumbers = contactMap.keySet(); Set<String> matchingContactNames = new HashSet<>(); for (String phoneNumber : firebasePhoneNumbers) { // 如果当前手机号在联系人Map中存在,就取出对应的联系人名称加入结果集 if (contactPhoneNumbers.contains(phoneNumber)) { matchingContactNames.add(contactMap.get(phoneNumber)); } } return matchingContactNames; }
关键改动说明
- 泛型优化:把原来的无类型
Map和List改成带泛型的Map<String, String>(键是手机号,值是联系人名称)和List<String>(存储Firebase返回的手机号),这样能避免运行时的类型转换错误,让代码更严谨安全。 - 结果逻辑调整:原来的代码是把匹配的手机号加入结果集,现在改成通过
contactMap.get(phoneNumber)获取对应的联系人名称,再加入结果集合,直接满足你的需求。 - 方法名更清晰:把模糊的
contains改成getMatchingContactNames,让方法的作用一目了然,后续维护起来更方便。
可选扩展:同时返回手机号和联系人名称
如果你需要同时保留匹配的手机号与对应的联系人名称,可以把返回类型改成Map<String, String>:
import java.util.HashMap; import java.util.List; import java.util.Map; public static Map<String, String> getMatchingContacts(Map<String, String> contactMap, List<String> firebasePhoneNumbers) { Map<String, String> matchingContacts = new HashMap<>(); for (String phoneNumber : firebasePhoneNumbers) { if (contactMap.containsKey(phoneNumber)) { matchingContacts.put(phoneNumber, contactMap.get(phoneNumber)); } } return matchingContacts; }
这样调用方法后,你就能直接拿到所有匹配项的手机号与联系人名称的完整映射关系了。
内容的提问来源于stack exchange,提问作者Panther007
相关产品推荐
相关产品推荐

