I would like to create a
public static final LinkedMap myMap;
Somewhere I found something similar for Maps:
public class Test {
private static final Map<Integer, String> MY_MAP = createMap();
private static Map<Integer, String> createMap() {
Map<Integer, String> result = new HashMap<Integer, String>();
result.put(1, "one");
result.put(2, "two");
return Collections.unmodifiableMap(result);
}
}
But I cannot apply the 'unmodifiableMap' method it to a LinkedMap
. Can anybody help me? Is it possible at all?
The most popular workaround is almost certainly a Guava ImmutableMap
. (Disclosure: I contribute to Guava.)
Map<Integer, String> map = ImmutableMap.of(
1, "one",
2, "two");
or
ImmutableMap<Integer, String> map = ImmutableMap
.<Integer, String> builder()
.put(1, "one")
.put(2, "two")
.build();
Without other libraries, the only workaround other than the one you've written is
static final Map<Integer, String> CONSTANT_MAP;
static {
Map<Integer, String> tmp = new LinkedHashMap<Integer, String>();
tmp.put(1, "one");
tmp.put(2, "two");
CONSTANT_MAP = Collections.unmodifiableMap(tmp);
}