Collectors.toSet()
не сохраняет порядок. Вместо этого я мог бы использовать списки, но хочу указать, что результирующая коллекция не допускает дублирования элементов, а именно для этого и предназначен Set
интерфейс.
java
java-8
collectors
гвласов
источник
источник
SortedSet
работать? Если нет, то можно пойти на заказ.Ответы:
Вы можете использовать
toCollection
и предоставить конкретный экземпляр того набора, который хотите. Например, если вы хотите сохранить порядок размещения:Например:
источник
ImmutableSet
что в моем случае Guava будет даже лучше. Есть идеи, как сделать коллекционера, который собираетImmutableSet
? Его экземпляры построены с использованием,ImmutableSet.Builder
которое не является aCollection
, поэтому я не могу понять, как вы могли бы создать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();
Не уверен, что это лучший подход, заключив полученный набор вCollections.unmodifiableSet
.