使用定义初始化List

时间:2014-04-17 13:57:48

标签: java spring

当我遇到这种情况时,我正在实现一个Java应用程序,并且无法找到哪种方式更好以及为什么这样做。以下是该方案。

我有一个静态列表,可以在应用程序启动时加载数据。

在我的ApplicationStartup类中,我有

public static List<Map<String,Object>> stockSymbolsListMap;

现在,当我使用Utility类中的函数加载此List时,我有以下代码:

//Check if the list has been initialized or not
if(ApplicationStartup.stockSymbolsListMap == null){

    ApplicationStartup.stockSymbolsListMap = new ArrayList<Map<String,Object>>();

    } else if(!(ApplicationStartup.stockSymbolsListMap.isEmpty())){

        // Clear the list to avoid redundancy
        ApplicationStartup.stockSymbolsListMap.clear();

    }

    // Adding all stock symbols to the list
    while(allStockSymbols.hasNext()){
        ApplicationStartup.stockSymbolsListMap.add(allStockSymbols.next().toMap());
    }

我在ApplicationStartup类本身中初始化此列表是不是更好?

public static List<Map<String,Object>> stockSymbolsListMap = new ArrayList<Map<String,Object>>();

2 个答案:

答案 0 :(得分:1)

这取决于。你的第一种方法类似于lazy initialization,这可能是有益的。如果您不需要立即stockSymbolsListMap,那么为什么要初始化它?另一方面,如果初始化非常便宜,那么为简单起见,您可以考虑立即初始化列表。总的来说,在你的程序环境中做任何更有意义的事情,以及将来最容易维护的事情。

答案 1 :(得分:1)

我可以看到列表是静态的,所以它将被类调用并初始化它你将使用静态代码,因此初始化不会重复,所以为什么你需要用这种方式来初始化它对我来说,我更喜欢使用单例bean而不是使用静态元素。