Collectors.toSet()
tidak menjaga ketertiban. Saya dapat menggunakan Daftar sebagai gantinya, tetapi saya ingin menunjukkan bahwa koleksi yang dihasilkan tidak memungkinkan duplikasi elemen, yang memang untuk tujuan Set
antarmuka.
java
java-8
collectors
gvlasov.dll
sumber
sumber
SortedSet
berhasil? Jika tidak, kebiasaan adalah cara yang tepat.Jawaban:
Anda dapat menggunakan
toCollection
dan memberikan contoh konkret dari himpunan yang Anda inginkan. Misalnya jika Anda ingin menjaga urutan penyisipan:Sebagai contoh:
sumber
ImmutableSet
akan lebih baik dalam kasus saya. Adakah ide tentang bagaimana saya bisa membuat kolektor yang mengoleksiImmutableSet
? Instansnya dibuat denganImmutableSet.Builder
yang bukan aCollection
, jadi saya tidak tahu bagaimana Anda akan membuatSupplier
untukCollectors.toCollection()
dalam kasus itu.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();
Tidak yakin apakah itu pendekatan yang lebih baik dengan membungkus set yang dihasilkan denganCollections.unmodifiableSet
.