örnek aşağıdaki kod satırını atın: Collectors.toSet() ve HashSet
Set<String> someSet = someColletion.stream().map(p -> p.toString()).collect(Collectors.toSet());
Ben
HashSet
istiyorum. Kodda bir hata ayıklayıcısını alarak, gerçekten bir
HashSet
alıyorum. Aşağıdaki kodu gözlemlemek
java.util.stream.Collectors.toSet()
bir göz vardı:
public static <T> Collector<T, ?, Set<T>> toSet() {
return new CollectorImpl<>((Supplier<Set<T>>) HashSet::new, Set::add,
(left, right) -> { left.addAll(right); return left; },
CH_UNORDERED_ID);
}
sözleşme garanti bir Set
ve uygulama bir HashSet
karar verir; mantıklı görünüyor. Ancak, benim uygulama sadece herhangi bir eski Set
değil, bir HashSet
tarafından garanti edilen sabit zaman aramasına ihtiyaç duymaktadır. toSet()
'un uygulanması, kendi hakları dahilinde olan bir FooSet
kullanmaya karar verirse, uygulamam tehlikeye girer.
Bu sorunun en iyi uygulama çözümü nedir?