Java-忽略大小写的映射键查找

时间:2018-12-13 19:19:01

标签: java dictionary hashmap string-comparison

我正在编写一个脚本,以创建从用户昵称到用户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()可以返回大写,小写或大小写混合的昵称。

我现在的问题是,在忽略大小写差异的同时,如何检查此昵称是否用作密钥?

提前谢谢!

1 个答案:

答案 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);
    }   
}
相关问题