第一種方法:static塊初始化
public class Demo{ private static final Map<String, String> myMap; static { myMap = new HashMap<String, String>(); myMap.put("a", "b"); myMap.put("c", "d"); } }
第二種方法:雙括號初始化 (匿名內部類)
HashMap<String, String > h = new HashMap<String, String>(){{ put("a","b"); }};
慎用, 非靜態內部類/ 匿名內部類包含了外圍實例的引用, 如果擁有比外部類更長的生命周期,有內存泄露隱患
第三種方法:Guava
使用guava創建一個HashMap時,可以這樣。
Map<String, Object> hashMap = Maps.newHashMap();
Map<String, Integer> left = ImmutableMap.of("a", 1, "b", 2, "c", 3); //或者 Map<String, String> test = ImmutableMap.<String, String>builder() .put("k1", "v1") .put("k2", "v2") ... .build();
這種方式的弊端是map被初始化后不能在進行put操作