Java - случай игнорирования поиска ключа карты - PullRequest
0 голосов
/ 13 декабря 2018

Я пишу скрипт, который создает карту из псевдонимов пользователя и идентификатора пользователя:

// 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 голосов
/ 14 декабря 2018

Вы можете сделать что-то похожее:

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