เมธอด toCollection() ของคลาส Collectors ใน Java คืน Collector ที่สะสม Input Elements เข้า Collection ใหม่ตาม Encounter Order
Syntax
static <T, C extends Collection<T>> Collector<T, ?, C> toCollection(Supplier<C> collectionFactory)
T- Type ของ Input ElementsC- Type ของ Resulting CollectionSupplier- Supplier ของ ResultscollectionFactory- Supplier ที่คืน Collection ใหม่ ว่าง พร้อม Type ที่เหมาะสม
ตัวอย่างที่ 1: Stream String → TreeSet (Unique + Sorted)
import java.util.Collection;
import java.util.TreeSet;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Demo {
public static void main(String[] args) {
Stream<String> stream = Stream.of("25", "10", "15", "20", "25");
Collection<String> collection = stream.collect(Collectors.toCollection(TreeSet::new));
System.out.println("Collection = " + collection);
}
}
ผลลัพธ์
Collection = [10, 15, 20, 25]
ตัวอย่างที่ 2: Stream String → TreeSet (ชื่อ)
import java.util.Collection;
import java.util.TreeSet;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Demo {
public static void main(String[] args) {
Stream<String> stream = Stream.of("Jack", "Tom", "Brad", "Tim", "Kevin", "Bradley", "Ryan");
Collection<String> collection = stream.collect(Collectors.toCollection(TreeSet::new));
System.out.println("Collection = " + collection);
}
}
ผลลัพธ์
Collection = [Brad, Bradley, Jack, Kevin, Ryan, Tim, Tom]
สรุป: ใช้ Collectors.toCollection(TreeSet::new) เมื่อต้องการ Unique Elements เรียงลำดับ ใช้ ArrayList::new สำหรับ List ธรรมดา LinkedHashSet::new สำหรับ Unique + Preserve Insertion Order