我正在尝试编写一个方法,在调用时将使用两个参数,即要插入的值和将添加值的键。
到目前为止,我已经提出了以下代码:
如何解决这个问题?
答案 0 :(得分:0)
字符串没有"添加"方法..
"cannot find symbol - method add(java.util.Set<java.lang.String>)"
因此异常 - 删除该行
如果您的值是&#34;其他值的集合&#34;比你需要的
private Map<String, Set<String>> map = new HashMap<String, Set<String>>();
//Map<key, value>
public void addValue(String key, Set<String> value)
{
map.put(key,value);
System.out.println(map.get(key));
}
答案 1 :(得分:0)
这取决于您的地图有哪个签名。它看起来你有一些问题。
但是你无法将smt添加到String
。你想要实现代码:
&#34;这里有一些字符串&#34; .add(&#34;另一个字符串&#34;)
编译器不允许这样做。
您必须使用add()
中的map
:
map.put(key,value);
<强> 更新: 强>
我尝试重新创建代码的所有细节,并且工作正常:
public class Test {
private static HashMap<String, Set<String>> map = new HashMap<>();
public static void addValue(String key, Set<String> value) {
Set<String> stringSet = map.get(key);
if (stringSet != null) {
updateSet(key, value, stringSet);
return;
}
map.put(key, value);
System.out.println(map.get(key));
}
private static void updateSet(String key, Set<String> value, Set<String> stringSet) {
stringSet.addAll(value);
map.put(key, stringSet);
System.out.println(stringSet);
}
public static void main(String[] args) {
addValue("hello", new HashSet<>(Arrays.asList("world", "duck", "dog")));
addValue("hello", new HashSet<>(Arrays.asList("flip")));
addValue("hello", new HashSet<>(Arrays.asList("flop")));
System.out.println(map);
}
}
<强> 输出: 强>
[duck, dog, world]
[duck, dog, flip, world]
[flop, duck, dog, flip, world]
{hello=[flop, duck, dog, flip, world]}
在这种情况下,我无法解释您的错误的奇怪行为。