Существует ли метод Collections.singleton()/Collections.singletonList()/Collections.singletonMap() для получения изменчивой коллекции?
Я знаю, если у меня есть элемент, и я хочу получить List
/Set
/Map
с этим элементом, который я могу вызвать:
Collections.singleton()
/Collections.singletonList()
/Collections.singletonMap()
В этом случае я получаю неизменную коллекцию (я не могу добавить/удалить элемент в коллекцию).
Существует ли аналог для получения изменчивой коллекции?
Ответы
Ответ 1
-
Для выхода такого API не было бы никакого смысла, потому что вы всегда можете использовать конструктор, который берет коллекцию (new ArrayList(Collections.singleton(whatever))
)
-
Если бы это существовало, это было бы вредно. Никакие здравомыслящие API не позволят вам выбрать реализацию новой коллекции (например, LinkedList
против ArrayList
) или дополнительные параметры (например, начальный размер).
Коллекции Singleton - это очень скудные адаптеры для передачи одного объекта API-интерфейсам, которые ожидают коллекцию. Если бы они были изменчивыми, это полностью оспаривало бы суть.
Ответ 2
Со стандартными библиотеками вы можете использовать:
new ArrayList<...>(Arrays.asList(...)))
new HashSet<...>(Arrays.asList(...)))
Они могут принимать любое количество элементов в качестве параметров. Библиотеки, такие как guava, имеют несколько более удобные методы:
Sets.newHashSet(...)
Lists.newArrayList(...)
Maps.newHashMap(ImmutableMap.of(...))