Мне нравится Гуава способ инициализации статической неизменной карты:
static final Map<Integer, String> MY_MAP = ImmutableMap.of(
1, "one",
2, "two"
);
Как видите, он очень лаконичен (из-за удобных заводских методов в ImmutableMap
).
Если вы хотите, чтобы на карте было более 5 записей, вы больше не можете использовать ImmutableMap.of()
. Вместо этого попробуйте ImmutableMap.builder()
по этим строкам:
static final Map<Integer, String> MY_MAP = ImmutableMap.<Integer, String>builder()
.put(1, "one")
.put(2, "two")
// ...
.put(15, "fifteen")
.build();
Чтобы узнать больше о преимуществах утилит неизменяемого сбора в Guava, см. Объясненные неизменяемые коллекции в Руководстве пользователя Guava .
(Подмножество) гуавы раньше называли Google Collections . Если вы еще не используете эту библиотеку в своем проекте Java, я настоятельно рекомендую попробовать! Guava быстро стал одним из самых популярных и полезных бесплатных сторонних библиотек для Java, так как пользователи SO соглашаются . (Если вы новичок в этом, за этой ссылкой есть несколько отличных учебных ресурсов.)
Обновление (2015) : Что касается Java 8 , я бы все равно использовал подход Guava, потому что он намного чище, чем все остальное. Если вам не нужна зависимость от Guava, рассмотрите простой старый метод инициализации 1038 *. Хак с двумерным массивом и Stream API довольно уродлив, если вы спросите меня, и становится еще более уродливым, если вам нужно создать карту, чьи ключи и значения не одного типа (например, Map<Integer, String>
в вопрос).
Что касается будущего Guava в целом, что касается Java 8, Луи Вассерман сказал это в 2014 году, а [ обновление ] в 2016 году было объявлено, что Guava 21 потребует и будет должным образом поддерживать Java 8 .
Обновление (2016) : Как отметил Тагир Валеев , Java 9 , наконец, сделает это чистым, используя только чистый JDK, добавив удобство фабричных методов для коллекций:
static final Map<Integer, String> MY_MAP = Map.of(
1, "one",
2, "two"
);