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

แปลง Iterable เป็น Stream ใน Java

สมมติมี Iterable ดังนี้:

Iterable<String> i = Arrays.asList("K", "L", "M", "N", "O", "P");

สร้าง Stream จาก Iterable ด้วย Custom Method convertIterable():

public static <T> Stream<T> convertIterable(Iterable<T> iterable) {
    return StreamSupport.stream(iterable.spliterator(), false);
}

ตัวอย่างโค้ดเต็ม

import java.util.*;
import java.util.stream.*;

public class Demo {
    public static <T> Stream<T> convertIterable(Iterable<T> iterable) {
        return StreamSupport.stream(iterable.spliterator(), false);
    }
    
    public static void main(String[] args) {
        Iterable<String> i = Arrays.asList("K", "L", "M", "N", "O", "P");
        Stream<String> s = convertIterable(i);
        System.out.println("Iterable to Stream: " + s.collect(Collectors.toList()));
    }
}

ผลลัพธ์

Iterable to Stream: [K, L, M, N, O, P]

คำอธิบาย: Iterable.spliterator() คืน Spliterator แล้ว StreamSupport.stream() สร้าง Stream จาก Spliterator Parameter ที่ 2 (false) = Parallel = false