Когда вы делаете это, вы создаете анонимный подкласс HashSet, что означает, что вы без необходимости загрязняете свою кодовую базу классами, которые не делают ничего нового.
Как насчет этого?
Set<String> set = new HashSet<String>(Arrays.asList("foo", "bar"));
Или, альтернативно, используйте класс Гуава * Sets
. У него есть фабричные методы для инициализации различных видов наборов:
Set<String> set = Sets.newHashSet("foo", "bar");
С Картами это сложнее, но вы можете использовать ImmutableMap
:
Map<String,String> myMap =
ImmutableMap.of("foo","bar","boo","jar");
или (изменяемая версия)
Map<String,String> myMutableMap =
Maps.newHashMap(ImmutableMap.of("foo","bar","boo","jar"));
Без внешних библиотек вы все равно можете инициализировать карту с одной записью:
Map<String,String> myMap = new HashMap<String, String>(
Collections.singleTonMap("foo","bar")
);
но это будет один уродливый зверь, если вы спросите меня.
UPD: вопрос не только в множествах, но и во всех типах
коллекции, добавлена карта, чтобы проиллюстрировать это.
Гуава имеет несколько Фабричных классов, таких как:
Sets
, Maps
, Lists
, Multimaps
, Multisets
, Ranges