source

주문 보존 세트로 수집하는 Collector가 있습니까?

factcode 2022. 9. 4. 14:27
반응형

주문 보존 세트로 수집하는 Collector가 있습니까?

Collectors.toSet()순서는 유지되지 않습니다.대신 Lists를 사용할 수 있지만 결과 컬렉션에서 요소의 복제가 허용되지 않음을 나타냅니다.Setinterface는 대상입니다.

사용할 수 있습니다.toCollection원하는 세트의 구체적인 예를 제공합니다.예를 들어 삽입 순서를 유지하는 경우:

Set<MyClass> set = myStream.collect(Collectors.toCollection(LinkedHashSet::new));

예를 들어 다음과 같습니다.

public class Test {    
    public static final void main(String[] args) {
        List<String> list = Arrays.asList("b", "c", "a");

        Set<String> linkedSet = 
            list.stream().collect(Collectors.toCollection(LinkedHashSet::new));

        Set<String> collectorToSet = 
            list.stream().collect(Collectors.toSet());

        System.out.println(linkedSet); //[b, c, a]
        System.out.println(collectorToSet); //[a, b, c]
    }
}

언급URL : https://stackoverflow.com/questions/27611896/is-there-a-collector-that-collects-to-an-order-preserving-set

반응형