Domain Object
public class Dish {
public Dish(String name, boolean vegetarian, int calories, Type type) {
this.name = name;
this.vegetarian = vegetarian;
this.calories = calories;
this.type = type;
}
public String getName() {
return name;
}
public int getCalories() {
return calories;
}
public boolean isVegetarian() {
return vegetarian;
}
public Type getType() {
return type;
}
private final String name;
private final boolean vegetarian;
private final int calories;
private final Type type;
public enum Type {MEAT, FISH, OTHER}
}
Initialization
private static List<Dish> menu = Arrays.asList(
new Dish("pork", false, 800, Dish.Type.MEAT)
, new Dish("beef", false, 700, Dish.Type.MEAT)
, new Dish("chicken", false, 400, Dish.Type.MEAT)
, new Dish("french fries", true, 530, Dish.Type.OTHER)
, new Dish("rice", true, 350, Dish.Type.OTHER)
, new Dish("season fruit", true, 120, Dish.Type.OTHER)
, new Dish("pizza", true, 550, Dish.Type.OTHER)
, new Dish("prawns", false, 300, Dish.Type.FISH)
, new Dish("prawns", false, 300, Dish.Type.FISH)
, new Dish("salmon", false, 450, Dish.Type.FISH) );
取最大值
Optional<Dish> optional = menu.stream().collect(maxBy(Comparator.comparingInt(Dish::getCalories)));
取和
int summingInt = menu.stream().collect(summingInt(Dish::getCalories));
取平均数
Double averagingInt = menu.stream().collect(averagingInt(Dish::getCalories));
各项统计
IntSummaryStatistics intSummaryStatistics
= menu.stream().collect(summarizingInt(Dish::getCalories));
System.out.println(intSummaryStatistics);
// IntSummaryStatistics{count=10, sum=4500, min=120, average=450.000000, max=800}