Collectors.toSet () und HashSet

Nehmen Sie die folgende Zeile des Beispielcodes:

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

Ich will einHashSet. Wenn ich einen Debugger zum Code nehme, erhalte ich tatsächlich einHashSet. Ich habe mir @ angesehjava.util.stream.Collectors.toSet(), um den folgenden Code zu beachten:

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

Der Vertrag garantiert a Set, und die Implementierung entscheidet sich für einHashSet; scheint vernünftig. Meine Implementierung benötigt jedoch die konstante Zeitsuche, die durch ein @ garantiert wirHashSet, nicht irgendein altesSet. Wenn die Implementierung vontoSet() beschließt, say a @ zu verwendFooSet, was vollkommen im Rahmen seiner Rechte liegt, ist meine Implementierung gefährdet.

Was ist die Best-Practice-Lösung für dieses Problem?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage