2012-01-31 99 views
0

我試圖在迷宮中查找房間的散列圖,並將外部房間添加到向量中。房間不斷增加多次,任何人都可以幫我弄清楚爲什麼?Java:向多個時間向多個向量添加元素到向量從HashMap向我添加元素

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而且不止一次在outerRooms

編輯:Screenshot from debug screen

+0

'mazeRooms'如何填充?它是否可以包含具有不同密鑰的重複「房間」? – 2012-01-31 15:51:43

+0

可能是一個Instace of Room會在Map中多次存在?這可以解釋它。你不檢查Room實例的uniqness。 – breezee 2012-01-31 15:51:51

+0

這是帶有字符串鍵的房間的散列圖,每個房間只出現一次 – BIU 2012-01-31 15:52:27

回答

0

如果同房被多次添加到outerRooms(),這意味着它不止一次出現在mazeRooms(使用不同的密鑰)。

+0

我在Eclipse中檢查了Variables視圖,而我調試時,房間只在mazeRoom中出現一次,在outerRooms中只出現一次 – BIU 2012-01-31 15:53:36

+1

@BIU:尊重,這似乎不太可能。事情有時不是他們看起來的樣子。你能否提供一個我們可以運行的完整示例並證明這種行爲? – NPE 2012-01-31 15:55:25

+0

謝謝...該程序使用了很多不同的文件,但我不知道我該怎麼做。我可以發送調試屏幕的屏幕截圖來向你展示我的意思嗎? – BIU 2012-01-31 15:58:08

1

在不知道數據的情況下,我的猜測是mazeRooms與多個鍵具有相同的值。如果您的需要是收集非重複數據,我建議使用Set而不是Vector

0

您可以使用HashSet而不是Vector來確保每個房間只記錄一次。