Collectors.toSet () и HashSet
Возьмите следующую строку примера кода:
Set<String> someSet = someColletion.stream().map(p -> p.toString()).collect(Collectors.toSet());
я хочуHashSet
, Принимая отладчик к коду, я действительно получаюHashSet
, Я посмотрел наjava.util.stream.Collectors.toSet()
соблюдать следующий код:
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);
}
Контрактгарантии a Set
и реализация решаетHashSet
; кажется разумным. Тем не менее, моя реализация нуждается в постоянном поиске времени, гарантированномHashSet
не просто какой-то старыйSet
, Если реализацияtoSet()
решает использовать, скажем,FooSet
, что вполне в его правах, моя реализация скомпрометирована.
Как лучше всего решить эту проблему?