Получить значение при отправке ключа - PullRequest
2 голосов
/ 07 октября 2019

У меня есть этот код для Multimap Guava:

String key = "first-key";
Multimap<String, String> map = ArrayListMultimap.create();

map.put(key, "firstValue");
map.put(key, "secondValue");
map.put(key, "thirdValue");

map.putAll("sec-key", Sets.newHashSet("am", "are", "is"));

for (String name : map.keySet()) {  
    System.out.println("key: " + name); 
}

Я хочу запросить эту структуру для значений.

Например: Как я могу отправить значение are и получить результатis

Ответы [ 2 ]

1 голос
/ 07 октября 2019

И are, и is являются значениями , сопоставленными с клавишей sec-key. Не существует простого способа поиска значения по другому значению, используя только мультикарту. Mutlimap предназначен для отображения ключей в значений . Не значения для значений.

Конечно, вы могли бы сделать что-то подобное, но это очень неэффективно - этот код требует от нас перебора всей карты:

for (Entry<String, String> entry : map.entries()){
    if (entry.getValue().equals("are")) {
        System.out.println(map.get(entry.getKey())); //will print the values mapped to the same key as `are`.

        break;
    }
}

Лучшее решение будетиспользовать вторую карту, в которой ключом будет are, а значением будет is (или одно из значений в случае Mutlimap). Если вы синхронизируете обе мутлимапы, вы сможете быстро выполнять поиск в обоих направлениях.

0 голосов
/ 07 октября 2019

Например: как я могу отправить значение are и получить результат is?

"are" не является ключом, сопоставленным со значением "is". Вы можете получить значение, только передав ключ на карту.

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