Collectors.toSet () y HashSet

Tome la siguiente línea de código de muestra:

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

quiero unHashSet. Tomando un depurador del código, de hecho estoy obteniendo unHashSet. Eché un vistazo ajava.util.stream.Collectors.toSet() observar el siguiente código:

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);
}

El contratogarantías a Set, y la implementación decide sobre unHashSet; parece razonable. Sin embargo, mi implementación necesita la búsqueda de tiempo constante garantizada por unHashSet, no cualquier viejoSet. Si la implementación detoSet() decide usar decir unFooSet, que está perfectamente dentro de sus derechos, mi implementación está comprometida.

¿Cuál es la solución de mejores prácticas para este problema?

Respuestas a la pregunta(1)

Su respuesta a la pregunta