Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

Java Stream Collectors toCollection() - สร้าง Collection จาก Stream

เมธอด 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 Elements
  • C - Type ของ Resulting Collection
  • Supplier - Supplier ของ Results
  • collectionFactory - 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