Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中初始化hashmap的良好设计模式选择_Java_Design Patterns_Hashmap - Fatal编程技术网

在Java中初始化hashmap的良好设计模式选择

在Java中初始化hashmap的良好设计模式选择,java,design-patterns,hashmap,Java,Design Patterns,Hashmap,我有一个Java中的非静态类,它有一个静态hashmap字段。hashmap应该用代码生成的一些键值对初始化。在此之后,hashmap将不会更改 这应该如何实现?我应该创建一个静态init方法并确保在使用该类之前运行一次,还是有更好的方法呢?您可以在类中使用静态初始值设定项块 e、 g 私有静态映射myMap; 静止的{ HashMap=newHashMap(); 地图放置(“foo”、“bar”); myMap=Collections.unmodifiableMap(地图); } 您可以使用G

我有一个Java中的非静态类,它有一个静态hashmap字段。hashmap应该用代码生成的一些键值对初始化。在此之后,hashmap将不会更改


这应该如何实现?我应该创建一个静态init方法并确保在使用该类之前运行一次,还是有更好的方法呢?

您可以在类中使用静态初始值设定项块

e、 g

私有静态映射myMap;
静止的{
HashMap=newHashMap();
地图放置(“foo”、“bar”);
myMap=Collections.unmodifiableMap(地图);
}

您可以使用Google Guava library轻松创建不可变地图:

private static Map<String, String> map = ImmutableMap.of(
    "key1", "value1",
    "key2", "value2");
private static Map=ImmutableMap.of(
“键1”、“值1”,
“键2”、“值2”);

如果您想对许多值使用它,则提供了
builder()

变量
map
的类型应该是
map
,而不是HashMap。@VGR“should”在这里是一个强有力的词,因为在上述代码中更改它没有实际价值。这将节省一些关键的笔划,虽然没有真正的反对意见。类成员变量是一个适当的
Map
,声明为
HashMap
的只有短寿命的块作用域
Map
变量。
private static Map<String, String> map = ImmutableMap.of(
    "key1", "value1",
    "key2", "value2");