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?