gpt4 book ai didi

java - 如何在全局中声明HashMap 并且只在第一次添加值?

转载 作者:行者123 更新时间:2023-11-29 04:55:51 25 4
gpt4 key购买 nike

我在每个方法中都使用 HashMap 并向其添加值,就像这样...

LinkedHashMap<String,String> ProductList = new LinkedHashMap<String,String>();
ProductList.put("107070706", "Hello");
ProductList.put("107070707", "Bye");
ProductList.put("107070708", "World");
ProductList.put("107070709", "SeeYou");

我想在类中声明它并且必须分配值以便稍后在我自己的方法中使用它...

我该怎么做?

注意:我想在构造函数中实现这个添加元素的部分,但它不符合我的要求。

最佳答案

假设 map 应该在您的类的每个实例之间共享,那么您需要将其设为静态。然后您使用一个静态初始化程序 block 来实例化和填充它:

public class SomeClass {

// Note that I've typed to Map instead of LinkedHashMap, and that it is now static
static final Map<String, String> PRODUCT_LIST;

static {
PRODUCT_LIST = new LinkedHashMap<>(); // Diamond operator requires Java 1.7+
PRODUCT_LIST.put("107070706", "Hello");
PRODUCT_LIST.put("107070707", "Bye");
PRODUCT_LIST.put("107070708", "World");
PRODUCT_LIST.put("107070709", "SeeYou");
}

// Rest of your code here
}

静态初始化器只执行一次,当类第一次被类加载器加载时。这意味着您无需在每次创建类的实例时都重新做大量工作。

通常 static final 变量以 ALL_UPPER_CASE 命名,因此实际上它应该被称为 PRODUCT_LIST

关于java - 如何在全局中声明HashMap 并且只在第一次添加值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33775273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com