IT Share you

Collectors.toSet () 및 HashSet

shareyou 2020. 12. 4. 21:27
반응형

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

계약은 보장Set, 구현이 결정한다 HashSet; 합리적인 것 같습니다. 그러나 내 구현에는 HashSet오래된 Set. 의 구현이 권한 범위 내에있는 toSet()say a를 사용하기로 결정하면 FooSet내 구현이 손상됩니다.

이 문제에 대한 모범 사례 솔루션은 무엇입니까?


당신은 보장하려는 경우 HashSet, 사용 Collectors.toCollection(HashSet::new).

참고 URL : https://stackoverflow.com/questions/30082555/collectors-toset-and-hashset

반응형