从外部方法中将值放在Hashmap中?

时间:2014-05-12 06:23:10

标签: java hashmap

我想做这个例子中的事情。我无法弄清楚它为什么不起作用。 myMap在主类中没有任何价值。但是如果我将“putSomethingInTheMap”中的值放入地图中,它在主类中具有正确的值。

你能给我一个如何处理这样的事情的建议吗?

public static void main(String[] args) {
    Map<String, Integer> meineMap = new HashMap<>();
    int wert = 1;
    putSomethingInTheMap(meineMap, wert);
    System.out.println(meineMap.get("A"));
}

private static void putSomethingInTheMap(Map<String, Integer> myMap, int value) {
    myMap = insert(value);
}

private static Map<String, Integer> insert(int wert) {
    Map<String, Integer> map = new HashMap<>();
    map.put("A", wert);
    return map;
}

4 个答案:

答案 0 :(得分:1)

private static void putSomethingInTheMap(Map<String, Integer> myMap, int value) {
    myMap.put("A", wert);
}

答案 1 :(得分:0)

基本上你正在做方法pass by refrence。在主类中,您创建一个地图并将其传递到putSomethingInTheMap,由insert返回的地图分配该地图。 因此,如果你在主类中有价值,那是因为传递给方法的参考。

答案 2 :(得分:0)

因为meineMap引用与原始引用相同。您在 insert 方法中声明了具有新值的新引用,并且java方法调用是按值传递,但是您传递引用 < em>在 putSomethingInTheMap 的参数中作为值传递!

答案 3 :(得分:0)

private static Map<String, Integer> insert(int wert) {
    Map<String, Integer> map = new HashMap<>();
    map.put("A", wert);
    return map;
}

这部分是错误的,因为你在这里做的是,对于地图中的每个插入操作,你创建一个新的地图(将是空的)并在这个地图中添加一个值并返回这个地图。 现在

myMap = insert(value);
每次进行插入操作时,

调用总是会得到一个只有1个值的地图。

<强>修正: 您无需在insert( int wert )中创建新地图,只需调用java地图的put()即可。解决方案代码已由@Maurice Perry发布