Collectors.toSet()
bewahrt nicht die Ordnung. Ich könnte stattdessen Listen verwenden, möchte aber darauf hinweisen, dass die resultierende Auflistung keine Elementduplizierung zulässt. Genau dafür ist die Set
Schnittstelle gedacht.
java
java-8
collectors
gvlasov
quelle
quelle
SortedSet
funktionieren? Wenn nicht, ist Custom der richtige Weg.Antworten:
Sie können
toCollection
die konkrete Instanz des gewünschten Satzes verwenden und bereitstellen. Zum Beispiel, wenn Sie die Einfügereihenfolge beibehalten möchten:Beispielsweise:
quelle
ImmutableSet
wäre in meinem Fall noch besser. Irgendwelche Ideen, wie ich einen Sammler machen kann, der sammeltImmutableSet
? Seine Instanzen werden mit einem erstellt,ImmutableSet.Builder
das kein a istCollection
, daher kann ich nicht herausfinden, wie Sie in diesem Fall einSupplier
for erstellen würdenCollectors.toCollection()
.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();
nicht sicher, ob es ein besserer Ansatz ist, indem ich das resultierende Set mit umhülleCollections.unmodifiableSet
.