java - 静态访问 HashMap/Array?

标签 java performance jsp static

下面是 Web 应用程序中使用的静态方法的示例。正如您所看到的,每次调用此方法时,String[] allergensArr 都会被实例化。它是线程安全的,因为它是静态方法,但这是一个昂贵的调用。

还有哪些其他方法可以使用 allergensArr[] 以便每次调用该方法时都不会实例化它。

我正在考虑以下选项。

  • 有一个初始化静态最终 String[] 的静态构造函数
  • 使用单例(尽管这会阻止很多人)

这将是一个常量数组,在实例化服务器的生命周期中不会更改。

public class UserHealthConcernsManager {
    public static String[] getAllergensFlag () {

        String[] allergensArr = new String[12];

        allergensArr[0] = "x";
        allergensArr[1] = "y";
        allergensArr[2] = "w";
                 _SNIP_
                return allergensArr;
     }
}

最佳答案

您是否考虑过使用列表来代替引用数组?

代码可以简化为:

public static final List<String> allergensFlag =
    Collections.unmodifiableList(Arrays.asList(
        "x",
        "y",
        "w",
        ...
    ));

如果您真的非常想要老式数组,那么克隆的成本很小

private static final String[] allergensFlag = {
    "x",
    "y",
    "w",
    ...
};

public static String[] getAllergensFlag () {
    return allergensFlag.clone();
}

关于java - 静态访问 HashMap/Array?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1608816/

相关文章:

java - 正则表达式找到最短匹配?

c# - 使用大文档时运行正则表达式非常慢

html - 在 CSS 样式标签中使用表达式语言

jsp - 与 JSP 等效的 Checkstyle?

java - JTextArea 自动调整高度

java - 使用不同的服务创建 OSGi bundle

java - 如何在不使用任何集合和循环的情况下删除 List<MyObject> 中的重复对象

php - CKEditor如何对HTML所见即所得编辑器进行编码?

c++ - 两个几乎相同的循环中的性能差异

java - 在 JSP 上单击提交后出现错误的 URL