2011-11-23 54 views
1

我有这个应用程序需要创建TreeMap <>(),并且该地图只需要创建一次。我有代码来创建地图,它的工作原理。我也有工作方法来保存和加载地图。我想知道什么是在我第一次运行应用程序之前仅在后台创建地图的最佳方式,并且只存储一次?我不想创建一个表示“创建地图”的按钮,然后再次访问该页面。有任何想法吗?Java TreeMap单一创建

谢谢,

回答

1

您可以声明它在一个静态字段。这将只创建一次,如果你在一个静态块中调用load,它只会被调用一次。

例如

public static final MyTreeMapWrapper map = new MyTreeMapWrapper(); 

class MyTreeMapWrapper { 
    final TreeMap treeMap = ... 

    MyTreeMapWrapper() { 
     // loads data into treeMap 
+0

好的,但我问的是,我可以在哪里打电话给创建地图的方法?我应该定义一个新班级吗?一个JSF页面(因为正在开发JSF应用程序)?或者在哪里?任何代码插图或psuedo赞赏:) –

+0

其中?是一个棘手的问题。你应该知道页面上的第一个调用将被导向到类所在的一些facesconfig.xml文件。你可以在那里尝试它 – GustyWind

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; 
    } 
}