package streams; import java.io.IOException; import java.math.BigInteger; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Stream; public class CreatingStreams { public static void show(String title, Stream stream) { final int SIZE = 10; List firstElements = stream .limit(SIZE + 1) .collect(Collectors.toList()); System.out.print(title + ": "); for (int i = 0; i < firstElements.size(); i++) { if (i > 0) System.out.print(", "); if (i < SIZE) System.out.print(firstElements.get(i)); else System.out.print("..."); } System.out.println(); } public static void main(String[] args) throws IOException { Path path = Paths.get("../gutenberg/alice30.txt"); String contents = new String(Files.readAllBytes(path), StandardCharsets.UTF_8); Stream words = Stream.of(contents.split("\\PL+")); show("words", words); Stream song = Stream.of("gently", "down", "the", "stream"); show("song", song); Stream silence = Stream.empty(); show("silence", silence); Stream echos = Stream.generate(() -> "Echo"); show("echos", echos); Stream randoms = Stream.generate(Math::random); show("randoms", randoms); Stream integers = Stream.iterate(BigInteger.ONE, n -> n.add(BigInteger.ONE)); show("integers", integers); Stream wordsAnotherWay = Pattern.compile("\\PL+").splitAsStream( contents); show("wordsAnotherWay", wordsAnotherWay); try (Stream lines = Files.lines(path, StandardCharsets.UTF_8)) { show("lines", lines); } } }