Java 8
Nous avons également la possibilité d'utiliser Stream
. Nous pouvons obtenir un flux de différentes manières:
Set<String> set = Stream.of("A", "B", "C", "D").collect(Collectors.toCollection(HashSet::new));
System.out.println(set);
String[] stringArray = {"A", "B", "C", "D"};
Set<String> strSet1 = Arrays.stream(stringArray).collect(Collectors.toSet());
System.out.println(strSet1);
// if you need HashSet then use below option.
Set<String> strSet2 = Arrays.stream(stringArray).collect(Collectors.toCollection(HashSet::new));
System.out.println(strSet2);
Le code source de Collectors.toSet()
montre que les éléments sont ajoutés un par un à a HashSet
mais la spécification ne garantit pas que ce sera un HashSet
.
"Il n'y a aucune garantie sur le type, la mutabilité, la sérialisation ou la sécurité des threads de l'ensemble renvoyé."
Il est donc préférable d'utiliser la dernière option. La sortie est:
[A, B, C, D]
[A, B, C, D]
[A, B, C, D]
Ensemble immuable (Java 9)
Java 9 a introduit Set.of
une méthode d'usine statique qui renvoie un ensemble immuable pour les éléments fournis ou le tableau.
@SafeVarargs
static <E> Set<E> of(E... elements)
Consultez les Méthodes d'usine statiques définies immuables pour plus de détails.
Ensemble immuable (Java 10)
Nous pouvons également obtenir un ensemble immuable de deux manières:
Set.copyOf(Arrays.asList(array))
Arrays.stream(array).collect(Collectors.toUnmodifiableList());
La méthode Collectors.toUnmodifiableList()
utilise en interne l' Set.of
introduction de Java 9. Consultez également ma réponse pour en savoir plus.