Collectors.toSet()
no conserva el orden. En su lugar, podría usar Listas, pero quiero indicar que la colección resultante no permite la duplicación de elementos, que es exactamente para lo Set
que sirve la interfaz.
java
java-8
collectors
gvlasov
fuente
fuente
SortedSet
Funcionaría? Si no, la costumbre es el camino a seguir.Respuestas:
Puede utilizar
toCollection
y proporcionar la instancia concreta del conjunto que desee. Por ejemplo, si desea mantener el orden de inserción:Por ejemplo:
fuente
ImmutableSet
sería aún mejor en mi caso. ¿Alguna idea sobre cómo puedo hacer un coleccionista que recolecteImmutableSet
? Sus instancias están construidas con unImmutableSet.Builder
que no es unCollection
, por lo que no puedo entender cómo harías unSupplier
paraCollectors.toCollection()
en ese caso.Set<String> linkedSet = list.stream().collect(Collectors.toCollection(LinkedHashSet::new));
linkedSet = Collections.unmodifiableSet(linkedSet);
Set<String> set = list.stream().collect( ImmutableSet.Builder<String>::new, ImmutableSet.Builder<String>::add, (builder1, builder2) -> builder1.addAll(builder2.build())).build();
No estoy seguro de si es un mejor enfoque envolviendo el conjunto resultante conCollections.unmodifiableSet
.