2014-05-20 86 views
-3

這是最初是一個arraylist,我轉換成哈希映射然而我得到錯誤 在方法添加形狀從開關(類型),我改變shapes.add shapes.put但仍然有一個錯誤,非常感謝幫助。ArrayList哈希圖轉換

switch (type) { // getting errors here on all cases 
     case "Polygon": 
      shapes.put(new RegularPolygon(name, val1, val2, x, y)); 
      break; 
     case "Rectangle": 
      shapes.put(new Rectangle(name, val1, val2, x, y)); 
      break; 
     case "CharL": 
      shapes.put(new LCharacter(name, val1, val2, x, y)); 
      break; 
     default: 
      errorMessage = "Invalid type " + type; 
      break; 
+2

始終爲您提供獲得準確完整的錯誤消息。並且總是閱讀您嘗試使用的方法的javadoc。 –

+1

爲什麼你放棄ArrayList以支持Map?我不認爲你需要在這裏的地圖。 – Claudio

+0

在getShapes中,創建兩個數組。你可以刪除第一個陳述。 –

回答

2

的Map.put()函數參數:第一密鑰,則該值。你只是提供價值。

您的代碼應該是這個樣子:

shapes.put("someKey", someShape); 

欲瞭解更多信息,請參閱API:http://docs.oracle.com/javase/tutorial/collections/interfaces/map.html

+0

在我的情況下會是什麼?我怎麼知道哪一個是關鍵哪一個是價值? – user3625665

+0

這完全取決於您和代碼的上下文。什麼是Shape的關鍵?也許它的名字? –

+0

當我試圖這樣做時,它仍然給我一個錯誤,我是否需要設置值?我可以進入它之前? – user3625665