我正在编写一个脚本,以创建从用户昵称到用户ID的映射:
// Get client informations to map
for (Client c : api.getClients()) {
teamspeakUserInfos.put(c.getNickname(), c.getId());
}
映射示例:
Nickname | 5
Username | 2
John |12
这是我用于检查地图中按键是否存在的代码:
if (teamspeakUserInfos.containsKey(genUserNickname())) {
victimTeamspeakID = teamspeakUserInfos.get(genUserNickname());
break;
}
genUserNickname()
可以返回大写,小写或大小写混合的昵称。
我现在的问题是,在忽略大小写差异的同时,如何检查此昵称是否用作密钥?
提前谢谢!
答案 0 :(得分:0)
您可以执行类似的操作:
public class ContainsKeyIgnoreCase {
public static void main(String[] args) {
Map<String, Integer> userInfo = new HashMap<String, Integer>();
userInfo.put("nickNamE", 1);
String nickName = "NiCKname";
System.out.println(containsKeyIgnoreCase(userInfo, nickName));
}
public static boolean containsKeyIgnoreCase(Map<String, Integer> map, String lookupKey) {
return map.keySet()
.stream()
.map(key -> key.equalsIgnoreCase(lookupKey))
.reduce(false, Boolean::logicalOr);
}
}