Je recherche un moyen très simple de créer un ensemble.
Arrays.asList("a", "b" ...)
crée un List<String>
Y a-t-il quelque chose de similaire pour Set
?
java
collections
cahen
la source
la source
Réponses:
Désormais, avec Java 8, vous pouvez le faire sans avoir besoin d'un framework tiers:
Voir les collectionneurs .
Prendre plaisir!
la source
En utilisant Guava , c'est aussi simple que cela:
Ou pour un ensemble mutable:
Pour plus de types de données, consultez le guide de l'utilisateur de Guava
la source
Sets.newHashSet("a", "b")
orSets.newLinkedHashSet("a", "b")
Sets.newLinkedHashSet()
n'existe pas avec cette signature, désoléSet<String> mySet = ImmutableSet.of("a", "b");
Vous pourriez utiliser
la source
Pour les cas particuliers des ensembles avec zéro ou un membre, vous pouvez utiliser:
et:
la source
java.util.Collections.emptySet()
est, dans mon esprit, préféré à EMPTY_SET, en raison de la sécurité du type. D'après les commentaires de la classe Collections:Unlike the like-named field, this method is parameterized.
Comme d'autres l'ont dit, utilisez:
La raison pour laquelle cela n'existe pas en Java est que
Arrays.asList
renvoie une liste de taille fixe, en d'autres termes:Retour:
Il n'y a pas d'implémentation JDK d'une "taille fixe"
Set
à l'intérieur de laArrays
classe. Pourquoi vous voulez ceci? ASet
garantit qu'il n'y a pas de doublons, mais si vous les tapez à la main, vous ne devriez pas avoir besoin de cette fonctionnalité ... etList
a plus de méthodes. Les deux interfaces étendentCollection
etIterable
.Comme d'autres l'ont dit, utilisez goyave si vous voulez vraiment cette fonctionnalité - car elle n'est pas dans le JDK. Regardez leurs réponses (en particulier la réponse de Michael Schmeißer) pour plus d'informations à ce sujet.
la source
Dans Java 9, une fonction similaire a été ajoutée via des méthodes d'usine:
(Il existe également des équivalents
List
.)la source
Non mais tu peux le faire comme ça
la source
Dans la goyave, vous pouvez utiliser
newHashSet
la source
Voici une petite méthode que vous pouvez utiliser
la source
Une autre façon de le faire en utilisant Java 8 et les énumérations serait:
Voir EnumSet .
Je recommanderais une analyse des performances entre cette approche et
car si vous avez plus de cinq éléments, le javadoc de la méthode indique que cela peut être des problèmes de performances comme vous pouvez le voir dans le javadoc de Set.Of (E, E ...) .
la source