Я ищу очень простой способ создать Сет.
Arrays.asList("a", "b" ...)
создает List<String>
Есть что-нибудь подобное Set
?
java
collections
Cahen
источник
источник
Ответы:
Теперь с Java 8 вы можете делать это без сторонней инфраструктуры:
См. Коллекционеры .
Наслаждайтесь!
источник
Используя Guava , это очень просто:
Или для изменяемого набора:
Дополнительные типы данных см. В руководстве пользователя Guava.
источник
Sets.newHashSet("a", "b")
илиSets.newLinkedHashSet("a", "b")
Sets.newLinkedHashSet()
не существует с этой подписью, извинитеSet<String> mySet = ImmutableSet.of("a", "b");
Вы могли бы использовать
источник
Для особых случаев наборов с одним или одним элементом можно использовать:
и:
источник
java.util.Collections.emptySet()
на мой взгляд, предпочтительнее EMPTY_SET из-за безопасности типов. Из комментариев в классе «Коллекции»:Unlike the like-named field, this method is parameterized.
Как говорили другие, используйте:
Причина, по которой этого не существует в Java, заключается в том, что он
Arrays.asList
возвращает список фиксированного размера, другими словами:Возврат:
Set
ВнутриArrays
класса нет реализации JDK «фиксированного размера» . а зачем тебе это? ASet
гарантирует отсутствие дубликатов, но если вы набираете их вручную, вам не понадобится эта функциональность ... иList
есть больше методов. Оба интерфейса расширяютсяCollection
иIterable
.Как говорили другие, используйте guava, если вам действительно нужна эта функциональность - поскольку ее нет в JDK. Посмотрите их ответы (в частности, ответ Михаэля Шмайсера), чтобы узнать об этом.
источник
В Java 9 аналогичная функция была добавлена с помощью фабричных методов:
(Есть и эквиваленты
List
.)источник
Нет, но ты можешь сделать это вот так
источник
В гуаве вы можете использовать
newHashSet
источник
Вот небольшой метод, который вы можете использовать
источник
Другой способ сделать это с использованием Java 8 и перечислений:
См. EnumSet .
Я бы рекомендовал провести анализ производительности между этим подходом и
потому что, если у вас более пяти элементов, в javadoc метода указано, что могут возникнуть проблемы с производительностью, как вы можете видеть в javadoc Set.Of (E, E ...) .
источник