我有这个应用程序需要创建TreeMap<>(),这个地图只需要创建一次。我有代码来创建地图,它的工作原理。我也有工作方法来保存和加载地图。我想知道在我第一次运行应用程序之前只有一次在幕后创建地图的最佳方法是什么?只有这一次?我不想创建一个显示“创建地图”的按钮,然后再也不会访问该页面。有什么想法吗?
谢谢,
答案 0 :(得分:1)
您可以在静态字段中声明它。这将只创建一次,如果在静态块中调用load,则只调用一次。
e.g。
public static final MyTreeMapWrapper map = new MyTreeMapWrapper();
class MyTreeMapWrapper {
final TreeMap treeMap = ...
MyTreeMapWrapper() {
// loads data into treeMap
答案 1 :(得分:1)
以下类将在第一次调用get方法时实例化地图。您只需在每次需要地图时调用Bla.getMap()
,而无需担心其初始化。
public class Bla {
private static TreeMap map = null;
public static TreeMap getMap() {
if (map==null) {
synchronized (Bla.class) {
map = new TreeMap...
// rest of initialization code
}
}
return map;
}
}