2015-04-30 12 views
2

我認爲這很容易,但我掙扎...我想發送2個字符串到一個方法,並有一個作爲地圖鍵和另一個作爲集的名稱; 編輯:地圖聲明; 編輯2爲地圖添加構造函數;添加字符串作爲地圖集的名稱

public HashMap<String, Set<String>> playerMap; //edit 1 

public Planets() 

{ playerMap =新的HashMap <>();

} //編輯2

public void addMapEntry(String newPlayerAdd, String newPlanetAdd) 

{ 
    playerMap.put(newPlayerAdd, newPlanetAdd); 
} 

和我得到錯誤消息

參數失配 java.util.Map.put(java.lang.String中,jaav.util.Set)是 不適用; (....)不能轉換爲(...)。

我已經創造了這個相同的類地圖和以前的設置和所有已添加精...

我已經改變了代碼

public void addMapEntry(String newPlayerAdd, Set<String> newPlanetAdd) { 
    planetStats = new TreeSet<>(newPlanetAdd); 
    playerMap.put(newPlayerAdd, newPlanetAdd); 
} 

而且我得到一個運行時錯誤而不是編譯時錯誤; 我覺得我不是傳遞變量的正確格式的方法...任何幫助讚賞... 目前在發的

allPlanets.addMapEntry("Jane", "Klethron"); 
+3

一個字符串就是一個字符串,即使它恰好包含一個變量的名稱。這意味着你不能用它來替代你需要使用的實際變量。如果您要將Set添加到您的地圖,則需要添加Set,而不是包含其變量名稱的String。 – JonK

+0

你可以用playerMap聲明來編輯你的問題嗎? – Sarkhan

+0

如果刪除「planetStats = new TreeSet <>(newPlanetAdd);」 - 你的第二個代碼中的這一行。還請包括聲明「playerMap」 – Kartic

回答

0

形式應聲明你的地圖爲

Map<String, Set<String>> playerMap = new HashMap<String, Set<String>>() 

如果你想使用HashMap的實現..而應該調用方法

Set<String> set = new HashSet<String>(); 
set.add("Klethron"); 
allPlanets.addMapEntry("Jane", set); 
+0

'HashSet.add'不返回'this',而是一個布爾值。另外,這可能不是OP想要的(雖然不確定這是什麼)。 –

+0

嘗試過堆棧溢出編輯器..而不是eclipse ..但未能找到布爾值:) –

+0

@ tobias ...只需要添加鍵和值來映射給定的參數。 – Zumii

0

聲明你的地圖爲

Map<String, Set<String>> playerMap = new HashMap<String, Set<String>>() 

初始化您的設置

Set<String> setString = new HashSet<String>(); 
setString.add("String1"); //fill up the string set in this way 
allPlanets.addMapEntry("Jane", setString);