Estou procurando uma maneira muito simples de criar um Conjunto.
Arrays.asList("a", "b" ...)
cria um List<String>
Existe algo semelhante para Set
?
java
collections
Cahen
fonte
fonte
Respostas:
Agora, com o Java 8, você pode fazer isso sem a necessidade de uma estrutura de terceiros:
Veja Coletores .
Aproveitar!
fonte
Usando Guava , é tão simples quanto isso:
Ou para um conjunto mutável:
Para obter mais tipos de dados, consulte o guia do usuário Guava
fonte
Sets.newHashSet("a", "b")
ouSets.newLinkedHashSet("a", "b")
Sets.newLinkedHashSet()
não existe com essa assinatura, desculpeSet<String> mySet = ImmutableSet.of("a", "b");
Você poderia usar
fonte
Para os casos especiais de conjuntos com zero ou um membro, você pode usar:
e:
fonte
java.util.Collections.emptySet()
é, em minha opinião, preferível a EMPTY_SET, devido à segurança de tipo. Dos comentários na classe Coleções:Unlike the like-named field, this method is parameterized.
Como já foi dito, use:
A razão pela qual isso não existe em Java é que
Arrays.asList
retorna uma lista de tamanho fixo, em outras palavras:Retorna:
Não há implementação JDK de um "tamanho fixo"
Set
dentro daArrays
classe. Por que voce quer isso? ASet
garante que não haja duplicatas, mas se você as estiver digitando manualmente, não precisará dessa funcionalidade ... eList
tem mais métodos. Ambas as interfaces estendemCollection
eIterable
.Como outros já disseram, use goiaba se você realmente deseja esta funcionalidade - já que não está no JDK. Veja as respostas deles (em particular a resposta de Michael Schmeißer) para obter informações sobre isso.
fonte
No Java 9, uma função semelhante foi adicionada por meio de métodos de fábrica:
(Existem equivalentes para
List
também.)fonte
Não, mas você pode fazer assim
fonte
Na goiaba você poderia usar
newHashSet
fonte
Aqui está um pequeno método que você pode usar
fonte
Outra maneira de fazer isso usando Java 8 e enums seria:
Veja EnumSet .
Eu recomendaria uma análise de desempenho entre esta abordagem e
porque se você tiver mais de cinco elementos, o javadoc do método indica que podem ser problemas de desempenho, como você pode ver no javadoc de Set.Of (E, E ...) .
fonte