考虑到我更广泛的计划的以下部分:
public class AnimalNames {
private static String[] animalNames = {dog, cat, horse, cow, donkey, elephant};
private static String[] animalNameAbbreviations = {d, c, h, co, d, e};
public static HashMap<String, String> getAnimalNameTranslations() {
HashMap<String, String> animalNameTranslations = new HashMap<String, String>();
for (int i = 0; i < animalNames.length; i++) {
animalNameTranslations.put(animalNameAbbreviations[i], animalNames[i])
}
return animalNameTranslations;
}
}
我能够访问填充的animalNameTranslations(使用static关键字),而无需实例化AnimalNames类,这正是我想要的。然而,我的程序仍然必须在每次我想访问它时填充animalNameTranslations(使用for循环)。有没有办法为我的程序只填充一次 HashMap 对象?
最佳答案
您可以从静态初始化 block 中调用 getAnimalNameTranslations
方法,该方法将在类初始化时执行一次。您必须添加一个静态成员来保存该方法返回的 Map。
例如:
private static HashMap<String, String> animalNameTranslations;
static {
animalNameTranslations = getAnimalNameTranslations ();
}
或者只是将该方法的逻辑直接移至静态初始化 block 。
private static HashMap<String, String> animalNameTranslations;
static {
animalNameTranslations = new HashMap<String, String>();
for (int i = 0; i < animalNames.length; i++) {
animalNameTranslations.put(animalNameAbbreviations[i], animalNames[i])
}
}
关于java - 如何为程序只填充一次HashMap对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30554279/