Как я могу получить объект из HashMap? - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь получить объект из HashMap и вызвать метод из этого объекта.Но после получения объекта я получаю нормальный java.lang.Object.

public void setExits(HashMap<Direction, Exit> e){
        this.exits = e;

        Iterator it = e.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry exits = (Map.Entry) it.next();
            Exit r = exits.getValue(); //HERE I GET ERROR
        }
    }

Ответы [ 5 ]

0 голосов
/ 23 мая 2018

То, что вы пропустили, это дженерики для Map.Entry.

Мне кажется, что вы пытаетесь перебрать все записи на карте, вам может быть проще найти цикл for.

for(Map.Entry<Direction, Exit> entry : e.entrySet()) {
    Direction dir = entry.value();
    //do stuff
} 
0 голосов
/ 23 мая 2018

Вот как я могу перебрать каждое значение в HashMap

HashMap<Directive, Exit> tempHashMap = new HashMap<>();
        for(Directive directive:tempHashMap.keySet()){
            Exit tempExit = tempHashMap.get(directive);
            //do what you want with the exit
        }
0 голосов
/ 23 мая 2018

Измените эту строку:

Iterator it = e.entrySet().iterator();

на:

Iterator<Entry<Direction, Exit>> it = e.entrySet().iterator();
0 голосов
/ 23 мая 2018

Вы объявляете ограничения типа в сигнатуре метода, но в теле метода вы не получаете никаких преимуществ от использования ограничений типа.

То, что вы делаете, похоже на то, что вы используете HashMap .Вот почему ошибка компиляции.

Правильный код:

public void setExits(HashMap<Direction, Exit> e){
    this.exits = e;
    Iterator<Map.Entry<Direction, Exit>> it = e.entrySet().iterator();

    while (it.hasNext()) {
        Map.Entry<Direction, Exit> entry = it.next();

        Exit r = entry.getValue(); // OK
    }
}
0 голосов
/ 23 мая 2018

Вы используете HashMap как список.Это не очень эффективный список.

Вместо этого выполните

 Object value = map.get(key);

И он будет пропускать элементы, которые не находятся под ключом, очень эффективно.

public void setExits(HashMap<Direction, Exit> exits, Direction direction){
    this.exits = e.get(direction);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...