Java - 映射键查找忽略大小写
Java - map key lookup ignoring case
我正在编写一个脚本来创建从用户昵称到用户 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()
可以 return 大写、小写或混合大小写的昵称。
我现在的问题是,如何在忽略大小写差异的情况下检查此昵称是否用作密钥?
提前致谢!
你可以做类似的事情:
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);
}
}
我正在编写一个脚本来创建从用户昵称到用户 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()
可以 return 大写、小写或混合大小写的昵称。
我现在的问题是,如何在忽略大小写差异的情况下检查此昵称是否用作密钥?
提前致谢!
你可以做类似的事情:
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);
}
}