Java 向具有指定键的映射添加值时出错

Java 向具有指定键的映射添加值时出错,java,dictionary,hashmap,key,Java,Dictionary,Hashmap,Key,我正在尝试编写一个方法,调用该方法时将接受两个参数,即要插入的值和要向其中添加值的键 到目前为止,我已经提出了以下代码: 如何解决此问题?字符串没有“添加”方法 “找不到符号-方法添加(java.util.Set)” 因此出现了例外——删除该行 如果您的值是“其他值的集合”,则需要 private Map<String, Set<String>> map = new HashMap<String, Set<String>>(); //

我正在尝试编写一个方法,调用该方法时将接受两个参数,即要插入的值和要向其中添加值的键

到目前为止,我已经提出了以下代码:

如何解决此问题?

字符串没有“添加”方法

“找不到符号-方法添加(java.util.Set)”
因此出现了例外——删除该行

如果您的值是“其他值的集合”,则需要

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));
}
private Map=new HashMap();
//地图
public void addValue(字符串键、设置值)
{
map.put(键、值);
System.out.println(map.get(key));
}

这取决于哪个签名有您的地图。看来你有点问题

但是不能将smt添加到
字符串中。您希望实现以下目标:

“这是一些字符串”。添加(“另一个字符串”)

编译器不允许这样做

您必须从
映射中使用
add()

map.put(键、值)

更新:

我尝试重新创建代码的所有细节,效果很好:

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

我无法解释您在这种情况下错误的奇怪行为。

哪个签名有您的
映射
?在类
字符串中没有方法
添加(设置)
。我想你想要
地图。添加(…)
。你应该需要阅读。我会尽量把我写的东西弄清楚。我会编辑我的帖子并在那里添加更多的代码,我希望这会更有用。类以其当前形式进行编译。不确定它是否正确,因为我不确定如何调用它来测试它。@JackB奇怪的行为。我根据新数据更新了答案。我将map设置为静态以避免创建类实例。这几乎就是我要寻找的。如果我错了,请纠正我,但您的代码似乎在向提供的键添加一组字符串?我需要的是向现有键添加一个值,如果这样做有意义的话,并且我需要能够从类外部调用该方法
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]}