2011-11-23 60 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; 
    } 
}