![](/img/trans.png)
[英]Java - How can I use a 3 argument constructor to set 2 instance variables
[英]How to use an argument for variables to execute a method for a map with a set included
我正在嘗試編寫一個帶有參數的方法作為地圖的鍵和地圖的值; 該值是一個集合。
我的方法標題是:
addMapEntry(String aKey, Set<String> aCustomer)
我不確定標頭是否正確,但是如果正確,我將如何執行該方法,因為我已經嘗試過類似的方法:
map.AddMapEntry("one", "Sony");
我只是收到類似的錯誤:
method addMapEntry in class CompanyCatalogue cannot be applied to given types;
required: java.lang.String,java.util.Set<java.lang.String>
found: java.lang.String,java.lang.String
reason: actual argument java.lang.String cannot be converted to java.util.Set<java.lang.String> by method invocation conversion
我認為問題在於我需要使用變量作為映射的值,因為我已經使它不帶參數,也帶鍵的參數。 我似乎無法將值的參數匹配到我可以在方法中使用的任何內容。
實例變量
private Map<String, Set<String>> systemsSold;
構造函數
public CompanyCatalogue()
{
systemsSold = new HashMap<String, Set<String>>();
}
我的方法
public void addMapEntry(String aUniqueKey, String aCustomer)
{
Set<String> newSet = new HashSet<String>();
newSet.add("Joe");
newSet.add("Mike");
systemsSold.put(aUniqueKey, aCustomer);
}
這已經超出了我的腦海,因此我們將不勝感激。
謝謝
第二個參數聲明為Set<String>
但是您嘗試傳遞String
。 要從單個String
創建Set<String>
,請使用Set<T> Collections.singleton(T)
( javadoc ):
map.addMapEntry("one", Collections.singleton("Sony"));
請注意,單例集是不可變的。 如果您打算稍后修改值(例如,通過添加元素),則可以將其包裝在new HashSet
:
map.addMapEntry("one", new HashSet<>(Collections.singleton("Sony")));
您正在傳遞單個String“ Sony”作為Set。 創建Set的實例並將其作為實際參數傳遞:
Set<String> mySet = new HashSet<String>();
mySet.add("Sony");
mySet.add("Crocket");
map.addMapEntry("one", mySet);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.