Czy istnieje Kolekcjoner, który zbiera do zestawu zachowującego zamówienia?
107
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 Setsłuży interfejs.
Fajnie, dokładnie tego potrzebuję, ale myślę, ImmutableSetże w moim przypadku guawa byłaby jeszcze lepsza. Jakieś pomysły, jak mogę zrobić kolekcjonera, który zbiera ImmutableSet? Jego instancje są zbudowane z rozszerzeniem, ImmutableSet.Builderktóre nie jest a Collection, więc nie mogę dowiedzieć się, jak w takim przypadku utworzyłbyś Supplierfor Collectors.toCollection().
@Susei Najbliższe, które znalazłem: 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 zestaw Collections.unmodifiableSet.
Oto dedykowane pytanie, ponieważ jest już poza tematem (i oczywiście dla większej liczby przedstawicieli za świetne odpowiedzi): stackoverflow.com/questions/27612165/ ...
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.