繁体   English   中英

使用指定键将值添加到地图时出错

[英]Error when adding a value to a map with specified key

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

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

如何解决这个麻烦?

字符串没有“ add”方法。

"cannot find symbol - method add(java.util.Set<java.lang.String>)"

因此例外-删除该行

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

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

这取决于哪个签名具有您的地图。 看来您有一些问题。

但是您不能将smt添加到String 您的代码要实现:

“这是一些字符串” .add(“另一个字符串”)

编译器不允许这样做。

您必须在map使用add()

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]}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM