import java.util.IntSummaryStatistics;
import java.util.stream.IntStream;

public class StatistikDeret {

    public static void main(String[] args) {
        // range: batas atas tidak ikut; rangeClosed: batas atas ikut
        System.out.println("range(1, 6)      = " + IntStream.range(1, 6).boxed().toList());
        System.out.println("rangeClosed(1, 5)= " + IntStream.rangeClosed(1, 5).boxed().toList());

        // iterate: nilai awal + fungsi lanjutan, dipagung limit
        System.out.println("pangkat dua      = " + IntStream.iterate(2, n -> n * 2).limit(6).boxed().toList());

        // lima operasi statistik bawaan pada deret 1..100
        System.out.println("sum              = " + IntStream.rangeClosed(1, 100).sum());
        System.out.println("min              = " + IntStream.rangeClosed(1, 100).min());
        System.out.println("max              = " + IntStream.rangeClosed(1, 100).max());
        System.out.println("average          = " + IntStream.rangeClosed(1, 100).average());
        System.out.println("count            = " + IntStream.rangeClosed(1, 100).count());

        // summaryStatistics: seluruh angka penting dalam satu penelusuran
        IntSummaryStatistics stat = IntStream.rangeClosed(1, 100).summaryStatistics();
        System.out.println("statistik        = " + stat);
    }
}
