, API Java-8. -, , , , ( ). Stream API , . , (, protonpack StreamUtils.windowed), , .
, Java-8 (, , ) ( BufferedReader.lines()). Java-9 , Scanner (. JDK-8072722), .
, , , . takeWhile, Java-9 (. JDK-8071597).
, StreamEx, :
Scanner sc = new Scanner(System.in).useDelimiter("[\n\r,\\s]+");
Iterable<String> iterable = () -> sc;
// Supplier which returns Lists of up to 3 numbers from System.in
Supplier<List<Integer>> triples = () -> StreamEx.of(iterable.spliterator())
.map(Integer::valueOf).limit(3).toList();
StreamEx.generate(triples).takeWhile(list -> !list.isEmpty())
// replace with your own stream operations
// they will be executed as soon as three numbers are entered
.forEach(System.out::println);
StreamEx, , StreamEx.takeWhile, backport Java-9 Stream.takeWhile.
jOOL, :
Scanner sc = new Scanner(System.in).useDelimiter("[\n\r,\\s]+");
Supplier<List<Integer>> triples = () -> Seq.seq(sc).map(Integer::valueOf).limit(3).toList();
Seq.generate(triples).limitUntil(List::isEmpty)
.forEach(System.out::println);
. Spliterator , jOOL Seq.seq(Iterator).
, . , , - :
import static com.codepoetics.protonpack.StreamUtils.*;
Scanner sc = new Scanner(System.in).useDelimiter("[\n\r,\\s]+");
Stream<List<Integer>> stream = takeUntil(windowed(
stream(() -> sc).map(Integer::valueOf), 3, 3), List::isEmpty);
stream.forEach(System.out::println);
, - , . , 3 . trunc, .