Java: добавление элементов в вектор из Hashmap несколько раз - PullRequest
0 голосов
/ 31 января 2012

Я пытаюсь просмотреть хэш-карту комнат в лабиринте и добавить те, которые являются внешними комнатами, к вектору.Помещения продолжают добавляться несколько раз, может кто-нибудь помочь мне выяснить, почему?

public void fillOuterRoomVector()
{
    //initialize the vector
    outerRooms = new Vector<Room>();

    //for each one
    for(Entry<String, Room> e : mazeRooms.entrySet()) 
    {
        //if it is outer
        if (e.getValue().isThisAnOuterRoom()==true)
        {
            //add it
            outerRooms.add(e.getValue());
        }
    }
}

РЕДАКТИРОВАТЬ: я проверял в представлении «Переменные» в Eclipse во время отладки, комнаты действительно появляются только один раз в mazeRooms и более одного раза.в externalRooms

РЕДАКТИРОВАТЬ: Screenshot from debug screen

Ответы [ 3 ]

1 голос
/ 31 января 2012

Не зная данных, я думаю, что mazeRooms имеет одинаковое значение с несколькими ключами. Если вам нужно иметь коллекцию недублированных данных, я бы рекомендовал использовать Set вместо Vector.

0 голосов
/ 31 января 2012

Вы можете использовать HashSet вместо Vector, чтобы каждая комната была записана только один раз.

0 голосов
/ 31 января 2012

Если одна и та же комната добавляется к outerRooms() более одного раза, это означает, что она присутствовала в mazeRooms более одного раза (с разными ключами).

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