package lambdasinaction.chap5;
import lambdasinaction.chap4.*;
import java.util.stream.*;
import java.util.*;
import static lambdasinaction.chap4.Dish.menu;
public class NumericStreams{
public static void main(String...args){
List<Integer> numbers = Arrays.asList(3,4,5,1,2);
Arrays.stream(numbers.toArray()).forEach(System.out::println);
int calories = menu.stream()
.mapToInt(Dish::getCalories)
.sum();
System.out.println("Number of calories:" + calories);
// max and OptionalInt
OptionalInt maxCalories = menu.stream()
.mapToInt(Dish::getCalories)
.max();
int max;
if(maxCalories.isPresent()){
max = maxCalories.getAsInt();
}
else {
// we can choose a default value
max = 1;
}
System.out.println(max);
// numeric ranges
IntStream evenNumbers = IntStream.rangeClosed(1, 100)
.filter(n -> n % 2 == 0);
System.out.println(evenNumbers.count());
Stream<int[]> pythagoreanTriples =
IntStream.rangeClosed(1, 100).boxed()
.flatMap(a -> IntStream.rangeClosed(a, 100)
.filter(b -> Math.sqrt(a*a + b*b) % 1 == 0).boxed()
.map(b -> new int[]{a, b, (int) Math.sqrt(a * a + b * b)}));
pythagoreanTriples.forEach(t -> System.out.println(t[0] + ", " + t[1] + ", " + t[2]));
}
public static boolean isPerfectSquare(int n){
return Math.sqrt(n) % 1 == 0;
}
}