Проблема в доступе к элементам из Google Hashmultimap

StackOverflow https://stackoverflow.com/questions/4023968

  •  26-09-2019
  •  | 
  •  

Вопрос

Я использую ниже код, чтобы получить и обрабатывать значение из Google Hashmultimap

    HashMultimap hmm = new HashMultimap();
    HashMultimap hmm2 = new HashMultimap();
    Element ele;
:
    hmm2.put("name","Amit");
    hmm.put("Amit",ele);
    hmm.put("rohit",hmm2);
 :   
    Iterator itr =  hmm.keys().iterator();
    String ky = (String) itr.next();
    System.out.println(hmm.get(ky));
    ky = (String) itr.next();
    System.out.println(hmm.get(ky));

В указанном выше коде, если элемент MAP (или запись) является элементом типа, то я хочу сделать некоторую работу. Если это тип Hashmultimap, выполните некоторую другую работу. Как я могу проверить и передавать объект к другой функции.

Это было полезно?

Решение

Так как это HashMultimap который также является SetMultimap, когда вы звоните hmm.get(ky) Возвращенная стоимость будет Set Из всех ценностей для этого ключа. Вы должны быть в состоянии повторить каждый из значений в Set и использовать instanceof на эти ценности. Если для каждого ключа не будет несколько значений, вы не должны использовать Multimap начать с и должен просто использовать нормальные HashMap.

    HashMultimap hmm = HashMultimap.create();
    HashMultimap hmm2 = HashMultimap.create();
    Element ele = new Element();
    hmm2.put("name", "Amit");
    hmm.put("Amit", ele);
    hmm.put("rohit", hmm2);
    Iterator itr = hmm.keys().iterator();
    String ky = (String) itr.next();

    Set elements = hmm.get(ky);
    Iterator elementsItr = elements.iterator();
    Object val = elementsItr.next();
    if (val instanceof Element) {
        doElementStuff((Element) val);
    }

    ky = (String) itr.next();
    elements = hmm.get(ky);
    elementsItr = elements.iterator();
    val = elementsItr.next();
    if (val instanceof Element) {
        doElementStuff((Element) val);
    }

Ключевой момент является то, что вызывает get() на HashMultimap Возвращает А. Set ценностей и не одно значение.

Другие советы

Используйте ключевое слово экземпляра.

Вот так:
if (item instanceof Element) //Do things

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top