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

标签 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

这是我用于检查 map 中关键位置的代码:

if (teamspeakUserInfos.containsKey(genUserNickname())) {
  victimTeamspeakID = teamspeakUserInfos.get(genUserNickname());
  break;
}

genUserNickname() 可以返回大写、小写或混合大小写的昵称。

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

提前谢谢您!

最佳答案

你可以做类似的事情:

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);
    }   
}

关于Java - 映射键查找忽略大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53768688/

相关文章:

java - "Set<String> ss1 = new HashSet<>(m1.keySet());"和 "Set<String> ss2 = m1.keySet();"之间有什么区别吗

python - 如何将此字典列表转换为 csv 文件?

java.lang.ClassCastException : java. util.HashMap 无法转换为 java.lang.Comparable

java - 在 IdentityHashMap 中使用字符串作为键

java - 将 TextView 设置为来自 TimePicker 的时间 - Android

java - 如何提取sftp url sftp ://<user>@<host>[:<port>][/<directory>] in java

python - 将字符串值从 pickled 转换为字典

java - java中合并多个Map并用不同的key区分它们的值

java - Spring 集成 JdbcPollingChannelAdapter 与可配置的选择和更新 SQL

Java - 从不同的类调用绘制方法?