2012-01-31 3 views
0

미로에있는 방의 해시 맵을 검토하고 벡터에 외부 실을 추가하려고합니다. 방이 여러 번 추가되면 누구나 내가 왜 알아낼 수 있습니까?Java : 해시 맵에서 벡터에 요소 추가하기

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()); 
     } 
    } 
} 

편집 : 같은 방은 만약 Screenshot from debug screen

+0

'mazeRooms'은 어떻게 채워 집니까? 서로 다른 키를 가진'Room'을 중복해서 포함 할 수 있습니까? –

+0

방의 Instace가지도에 여러 번 상주 할 수 있습니까? 그것을 설명 할 수 있습니다. Room 인스턴스의 uniqness를 확인하지 않습니다. – breezee

+0

문자열 키가있는 Rooms의 해시 맵입니다. 각 방은 정확히 한 번에 나타납니다. – BIU

답변

0

: 나는 디버깅하는 동안 객실은 정말 mazeRooms에 한 번만 표시 및

편집 outerRooms에 한 번 이상, 이클립스에서 볼 변수 체크 outerRooms()에 두 번 이상 추가되면 mazeRooms에 두 번 이상 나타납니다 (다른 키 사용).

+0

디버깅하는 동안 Eclipse의 변수보기를 체크했는데 방은 mazeRooms에 한 번만 나타나고 outerRooms에는 두 번 이상 나타납니다. – BIU

+1

@BIU : 존중함에 따라 그럴 것 같지 않습니다. 상황이 때로는 보이지 않는 경우가 있습니다. 우리가 실행할 수 있고 이러한 행동을 보여주는 완전한 모범을 보여줄 수 있습니까? – NPE

+0

고마워요. 프로그램에서 여러 파일을 많이 사용하기 때문에 어떻게 할 수 있을지 모르겠습니다. 무슨 뜻인지 보여주기 위해 디버그 화면의 스크린 샷을 보낼 수 있습니까? – BIU

1

데이터를 모른 채로 mazeRooms는 여러 개의 키가있는 동일한 값을가집니다. 중복되지 않은 데이터의 컬렉션이 필요하면 Vector 대신 Set을 사용하는 것이 좋습니다.

0

Vector 대신 HashSet을 사용하여 각 회의실이 한 번만 기록되도록 할 수 있습니다.

관련 문제