如何使用变量的参数来执行包含集合的地图的方法

时间:2018-05-08 23:59:42

标签: java collections set maps

我正在尝试编写一个方法,其中包含地图键和地图值的参数;该值是一个集合。

我的方法标题是:

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);

   }

这已经超出了我的想象,所以非常感谢任何帮助。

谢谢

2 个答案:

答案 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);