답변:
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]
}
}
ImmutableSet
내 경우에는 구아바가 더 나을 것이라고 생각 합니다. 수집하는 수집가를 어떻게 만들 수 있는지에 대한 아이디어가 ImmutableSet
있습니까? 그 경우는 내장되어 있습니다 ImmutableSet.Builder
하지 않은 Collection
그래서 당신이 할 것입니다 방법을 알아낼 수 없습니다, Supplier
대한 Collectors.toCollection()
경우이다.
Set<String> linkedSet = list.stream().collect(Collectors.toCollection(LinkedHashSet::new));
linkedSet = Collections.unmodifiableSet(linkedSet);
Set<String> set = list.stream().collect( ImmutableSet.Builder<String>::new, ImmutableSet.Builder<String>::add, (builder1, builder2) -> builder1.addAll(builder2.build())).build();
결과 집합을 Collections.unmodifiableSet
.