[java] 주문 보존 세트에 수집하는 수집기가 있습니까?

Collectors.toSet()질서를 유지하지 않습니다. 대신 Lists를 사용할 수 있지만 결과 컬렉션이 요소 복제를 허용하지 않는다는 것을 나타내려고 Set합니다. 이것이 바로 인터페이스의 용도입니다.



답변

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]
    }
}


답변