我正在尝试编写一个方法,其中包含地图键和地图值的参数;该值是一个集合。
我的方法标题是:
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);
}
这已经超出了我的想象,所以非常感谢任何帮助。
谢谢
答案 0 :(得分:1)
第二个参数声明为Set<String>
,但您尝试传入String
。要从单个Set<String>
创建String
,请使用Set<T> Collections.singleton(T)
(javadoc):
map.addMapEntry("one", Collections.singleton("Sony"));
请注意,单例集是不可变的。如果您打算稍后修改该值(例如通过添加元素),可以将其包装在new HashSet
:
map.addMapEntry("one", new HashSet<>(Collections.singleton("Sony")));
答案 1 :(得分:0)
你正在传递一个字符串&#34;索尼&#34;作为一套。 创建Set的实例并将其作为实际参数传递:
Set<String> mySet = new HashSet<String>();
mySet.add("Sony");
mySet.add("Crocket");
map.addMapEntry("one", mySet);