example - new icon java
¿Hay un recopilador que se acumula en un conjunto que preserva la orden? (1)
Puede usar toCollection
y proporcionar la instancia concreta del conjunto que desea. Por ejemplo, si desea mantener el orden de inserción:
Set<MyClass> set = myStream.collect(Collectors.toCollection(LinkedHashSet::new));
Por ejemplo:
public class Test {
public static final void main(String[] args) {
List<String> list = Arrays.asList("b", "c", "a");
Set<String> linkedSet =
list.stream().collect(Collectors.toCollection(LinkedHashSet::new));
Set<String> collectorToSet =
list.stream().collect(Collectors.toSet());
System.out.println(linkedSet); //[b, c, a]
System.out.println(collectorToSet); //[a, b, c]
}
}
Collectors.toSet()
no conserva el orden. Podría usar Listas en su lugar, pero quiero indicar que la colección resultante no permite la duplicación de elementos, que es exactamente para lo que es la interfaz Set
.