Подтвердить что ты не робот

Collectors.toSet() и HashSet

Возьмем следующую строку кода примера:

Set<String> someSet = someColletion.stream().map(p -> p.toString()).collect(Collectors.toSet());

Я хочу a 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);
}

Контракт гарантирует Set, а реализация принимает решение о HashSet; кажется разумным. Однако для моей реализации требуется постоянный поиск времени, гарантированный HashSet, а не только старый Set. Если реализация toSet() решает использовать say a FooSet, которая полностью соответствует его правам, моя реализация скомпрометирована.

Каково наилучшее решение этой проблемы?

4b9b3361