/**
* Collectors ,
* : !
* , , (Stream collect
* )。 , 。
* , , ——
* 。
*/
public class Demo01 {
public static void main(String[] args) {
List menues = Arrays.asList(new Dish("rice", true, 10000, Dish.Type.FISH), new Dish("meate", false, 20000, Dish.Type.FISH), new Dish("dog", true, 30000, Dish.Type.FISH));
// test01(menues);
// test02(menues);
// test03(menues);
// test04(menues);
// test05(menues);
test06(menues);
}
/**
* List
*/
public static void test01(List menues) {
List dishes = menues.stream().collect(toList());
}
/**
* counting ,
*
*
* @param menues
*/
public static void test02(List menues) {
Long count = menues.stream().collect(counting());
System.out.println(count);
long count2 = menues.stream().count();
System.out.println(count2);
}
/**
* :
*
* Optional 。 , “ menu
* ”。 !Java 8 Optional, ,
* 。
*
* @param menues
*/
public static void test03(List menues) {
Optional optionalDish = menues.stream().collect(maxBy(comparing(Dish::getCalories)));
if (optionalDish.isPresent()) {
System.out.println(" :" + optionalDish.get().getCalories());
} else {
System.out.println(" , !");
}
Optional optionalDish2 = menues.stream().collect(maxBy(comparingInt(Dish::getCalories)));
Optional optionalDish3 = menues.stream().max(comparing(Dish::getCalories));
if (optionalDish3.isPresent()) {
System.out.println(" :" + optionalDish.get().getCalories());
} else {
System.out.println(" , !");
}
Optional minCalory = menues.stream().min(comparing(Dish::getCalories));
if (minCalory.isPresent()) {
System.out.println(" :" + optionalDish.get().getCalories());
} else {
System.out.println(" , !");
}
}
/**
* :
* Collectors :Collectors.summingInt。
* int , ; collect
* 。 ,
* 6-2 。 , ,
* ( 0)。
* Collectors.summingLong Collectors.summingDouble ,
* long double 。
*
* @param menues
*/
public static void test04(List menues) {
Integer sumCalory = menues.stream().collect(summingInt(Dish::getCalories));
System.out.println(" :" + sumCalory);
int sum = menues.stream().mapToInt(Dish::getCalories).sum();
System.out.println(" :" + sum);
}
/**
* :
*
* @param menues
*/
public static void test05(List menues) {
Double avgCalory = menues.stream().collect(averagingInt(Dish::getCalories));
System.out.println(avgCalory);
}
/**
* :
* , ,
* , 。 ,
* , 。 , summarizingInt
* 。 , summarizing ,
* 、 、
*
* @param menues
*/
public static void test06(List menues) {
IntSummaryStatistics collectCalory = menues.stream().collect(summarizingInt(Dish::getCalories));
System.out.println(collectCalory.toString());
System.out.println("max:" + collectCalory.getMax() + ";min:" + collectCalory.getMin() + ";avg:" + collectCalory.getAverage() + ";sum" + collectCalory.getSum() + ";count" + collectCalory.getCount());
}
}
git hub :
https://github.com/wangrui0