Если HashMap содержит ключ (любая часть строки) - PullRequest
0 голосов
/ 06 марта 2019

Вопрос звучит немного странно, но я могу объяснить это: У меня есть HashMap, заполненный строками в качестве ключей и значений. И у меня есть строка. Теперь я хочу сделать что-то подобное:

if(myhashmap.containskey(ANY PART OF MY STRING)

Как:

String str = "Java is cool!";
[HashMap that contains following : "Java";

Я хочу проверить, содержит ли строка что-то. Может быть, я мог бы сделать это с помощью цикла for, но нет ничего похожего на hashmap.entry. Что бы вы сделали?

Ответы [ 2 ]

1 голос
/ 06 марта 2019

Вы можете перебрать ключи карты и проверить, находятся ли они в строке:

String str = "Java is cool!";
Map<String, ...> map = ...;

for (String key : map.keySet()) {
    if (str.contains(key)) {
        ...
    }
}

Если вам также нужно соответствующее значение для key, , которое вы можете использовать entrySet.

0 голосов
/ 06 марта 2019

Вы можете сделать это с помощью потока и фильтрации, что довольно функционально:)

Map<String, Integer> map = new HashMap<>();
map.put("Hello World", 1);
map.put("Challo World", 2);
map.put("Hallo World", 3);
map.put("Hello Universe", 4);
map.put("Hello Cosmos", 5);

List<Integer> values =
    map.keySet().stream()
       .filter(key -> key.contains("World"))
       .map(map::get)
       .collect(Collectors.toList());

Вы должны получить List<Integer> со значениями 1,2,3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...