Каков наилучший способ статической инициализации модифицируемых Карт? Я нашел только
ImmutableMap.of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5)
Но этот способ создал неизменяемую карту и содержит фиксированный список параметров.
Каков наилучший способ статической инициализации модифицируемых Карт? Я нашел только
ImmutableMap.of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5)
Но этот способ создал неизменяемую карту и содержит фиксированный список параметров.
Если вам нужен способ кода of
, вы можете использовать:
myMap = Maps.newHashMap(ImmutableMap.of(k1, v1, k2, v2...));
Кроме того, ImmutableMap.Builder
- другой выбор для создания Карты из сложного источника:
myMap = Maps.newHashMap(new ImmutableMap.Builder<K, V>()
.put(k1, v1) //One k-v pair
.putAll(otherMap) //From other Map
.put(Maps.immutableEntry(k2, v3)) //From a Map Entry
...
.build());
Плюс: мой код не является оригинальным намерением ImmutableMap. Если Нава настаивает на использовании библиотеки Guava;)
На самом деле вам не нужна статическая инициализация. Что случилось со следующим?
Map<K, V> map = Maps.newHashMap();
map.put(k1, v1);
map.put(k2, v2);
// More put() calls
// map is now ready to use.
При необходимости вы можете создать вспомогательный метод, но вы можете создавать только так много разных версий (для 1 записи, 2 записи и т.д.). В какой-то момент это больше не помогает.
Нет смысла иметь это для изменчивых коллекций. Единственная причина, по которой я могу думать, это то, что вы хотите иметь сокращение для этого, создавая изначально небольшие изменчивые карты. Напиши свои собственные утилиты, если вам это нужно часто:
public static <K,V> HashMap<K,V> newHashMap(K k1, V v1) {
HashMap<K, V> map = new HashMap<>();
map.put(k1, v1);
return map;
}
public static <K,V> HashMap<K,V> newHashMap(K k1, V v1, K k2, V v2) {
HashMap<K, V> map = new HashMap<>();
map.put(k1, v1);
map.put(k2, v2);
return map;
}
...
Переопределите его, если вы считаете, что он все еще доступен для чтения. Из-за смешения с ключами и ценностями это становится нечитаемым быстро, на мой взгляд, даже при правильном форматировании. Guava ребята остановили это на 5 пар ключ-значение, что слишком много imho.