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