1、使用静态代码块初始化
public class Test {
private static final Map<Integer, String> myMap;
static {
Map<Integer, String> aMap = HashMap<Integer, String>();
aMap.put(1, "one");
aMap.put(2, "two");
myMap = Collections.unmodifiableMap(aMap);
}
}
2、使用static静态方法初始化
public class Test {
private static final Map<Integer, String> MY_MAP = createMap();
private static Map<Integer, String> createMap() {
Map<Integer, String> result = new HashMap<>();
result.put(1, "one");
result.put(2, "two");
return Collections.unmodifiableMap(result);
}
}
3、使用Map.ofEntries初始化(Java 9+)
文档:
import static java.util.Map.entry;
private static final Map<Integer,String> map = Map.ofEntries(
entry(1, "one"),
entry(2, "two"),
entry(3, "three"),
entry(4, "four"),
entry(5, "five"),
entry(6, "six"),
entry(7, "seven"),
entry(8, "eight"),
entry(9, "nine"),
entry(10, "ten"));
4、使用Stream.of()和SimpleImmutableEntry初始化(Java 8+)
文档:
import java.util.AbstractMap.*;
private static final Map<Integer, String> myMap = Stream.of(
new SimpleEntry<>(1, "one"),
new SimpleEntry<>(2, "two"),
new SimpleEntry<>(3, "three"),
new SimpleEntry<>(4, "four"),
new SimpleEntry<>(5, "five"),
new SimpleEntry<>(6, "six"),
new SimpleEntry<>(7, "seven"),
new SimpleEntry<>(8, "eight"),
new SimpleEntry<>(9, "nine"),
new SimpleEntry<>(10, "ten"))
.collect(Collectors.toMap(SimpleEntry::getKey, SimpleEntry::getValue));
5、使用Map.of实现静态Map初始化(Java 9+)
private static final Map<Integer, String> MY_MAP = Map.of(1, "one", 2, "two");
相关文档:
java中 static final修饰Hashmap静态成员变量初始化方法
java使用Hashmap中的数据初始化Hashmap并执行put数据的简洁代码