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 Setque sirve la interfaz.
java
java-8
collectors
gvlasov
fuente
fuente

SortedSetFuncionaría? Si no, la costumbre es el camino a seguir.Respuestas:
Puede utilizar
toCollectiony proporcionar la instancia concreta del conjunto que desee. Por ejemplo, si desea mantener el orden de inserción:Por ejemplo:
fuente
ImmutableSetserí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.Builderque no es unCollection, por lo que no puedo entender cómo harías unSupplierparaCollectors.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.