gpt4 book ai didi

java - 需要 HashMap 方面的帮助吗?

转载 作者:行者123 更新时间:2023-12-02 08:07:06 25 4
gpt4 key购买 nike

我有以下情况:

    public class MapTest {
String name = "guru";
/**
* @param args
*/
public static void main(String[] args) {
MapTest mapTest = new MapTest();
Map map = new HashMap();
map.put("name", mapTest.name);

System.out.println(mapTest.name);
map.put("name", "raj");
System.out.println(mapTest.name);
}

}

输出为:

guru
guru

有什么方法可以得到输出

guru
raj

即。我希望 HashMap map 和成员变量 name 同步。

谢谢。

最佳答案

你不能这么做。 Java 不是这样工作的。当你写:

map.put("name", mapTest.name);

这会将mapTest.name的当前值放入 map 中。计算参数后,它完全独立于原始表达式。

如果您需要做一些这样的事情,您将拥有某种可变的包装类 - 您将对包装器的引用放入 map 中,并且然后您可以更改包装器内的值,并且无论您如何到达包装器,您仍然会看到更改。

示例代码:

import java.util.*;

class StringWrapper {
private String value;

StringWrapper(String value) {
this.value = value;
}

public String getValue() {
return value;
}

public void setValue(String value) {
this.value = value;
}

@Override
public String toString() {
return value;
}
}


public class Test {
public static void main(String[] args) throws Exception {
Map<String, StringWrapper> map = new HashMap<String, StringWrapper>();

StringWrapper wrapper = new StringWrapper("Original");
map.put("foo", wrapper);

System.out.println(map.get("foo"));

wrapper.setValue("Changed");

System.out.println(map.get("foo"));
}
}

关于java - 需要 HashMap 方面的帮助吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6303120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com