初始化空HashMap

Pol*_*yov 1 java hashmap

我来自写了很多JavaScript,所以请耐心等待.

我有3个HashMaps,我在一个不同类的方法中引用它.我的代码(很简单)看起来像这样:

public class MainClass {
    private HashMap<String,Nation> randomHashMap = new HashMap<String,Nation>();
    DifferentClass d = new DifferentClass(this);
} //with getters/setters

public class DifferentClass {
    private MainClass mc;
    public void randomMethod() {
        System.out.println("randomHashMap is " + (mc.getRandomHashMap() == null));
    } //returns null
    public DifferentClass(MainClass c) {
        this.mc = c;
    }
} 
Run Code Online (Sandbox Code Playgroud)

但是,当我用其他方法调用它们时,它们是空的.

如何创建一个新的空HashMap?

Lui*_*oza 5

MainClass mcDifferentClass#randomMethod方法中使用变量之前,需要初始化变量.另外,请确保使用mc变量而不是MainClass.getRandomHashMap()方法(通过实际代码,我们不知道它的行为).您的代码将如下所示:

public class DifferentClass {

    private MainClass mc = new MainClass();

    public void randomMethod() {
        //assuming getRandomHashMap is the getter of randomHashMap attribute (and non static)
        System.out.println("randomHashMap is " + (mc.getRandomHashMap() == null));
    }
}

public class MainClass {
    private HashMap<String,Nation> randomHashMap = new HashMap<String,Nation>();
    DifferentClass d = new DifferentClass(this);

    public HashMap<String,Nation> getRandomHashMap() {
        return this.randomHashMap;
    }
} //with getters/setters
Run Code Online (Sandbox Code Playgroud)