Collectors.toSet()
nie zachowuje porządku. Mógłbym zamiast tego użyć List, ale chcę wskazać, że wynikowa kolekcja nie pozwala na powielanie elementów, a dokładnie do tego Set
służy interfejs.
java
java-8
collectors
gvlasov
źródło
źródło
SortedSet
zadziała? Jeśli nie, wybór należy do niestandardowych.Odpowiedzi:
Możesz użyć
toCollection
i podać konkretną instancję zestawu, który chcesz. Na przykład, jeśli chcesz zachować zamówienie reklamowe:Na przykład:
źródło
ImmutableSet
że w moim przypadku guawa byłaby jeszcze lepsza. Jakieś pomysły, jak mogę zrobić kolekcjonera, który zbieraImmutableSet
? Jego instancje są zbudowane z rozszerzeniem,ImmutableSet.Builder
które nie jest aCollection
, więc nie mogę dowiedzieć się, jak w takim przypadku utworzyłbyśSupplier
forCollectors.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();
Nie jestem pewien, czy jest to lepsze podejście, zawijając wynikowy zestawCollections.unmodifiableSet
.