您的位置:首页 > 编程语言 > Java开发

java8的学习计划---MyCollectorsAction-3

2018-03-06 10:35 441 查看
* 主要Collectors的Partition分组 Reduce聚合 Summarizing操作package com.company.LambdaExpressions.Collectors;

import com.company.java8.Dish;

import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.BinaryOperator;
import java.util.stream.Collectors;

import static com.company.java8.CollectorsAction.menu;

/**
* Created by mengxiaopeng on 2018/3/5.
* com.company.LambdaExpressions.Collectors
* 主要Collectors的Partition分组 Reduce聚合 Summarizing操作
*
*/
public class MyCollectorsAction3 {

public static void main(String[] args) {
testPartitioningByWithPredicate();
testPartitioningByWithPredicateAndCollector();
testReducingBinaryOperator();
testReducingBinaryOperatorAndIdentiy();
testReducingBinaryOperatorAndIdentiyAndFunction();
testSummarizingDouble();
testSummarizingLong();
testSummarizingInt();
}

private static void testPartitioningByWithPredicate() {
System.out.println("testPartitioningByWithPredicate");
Map<Boolean, List<Dish>> collect = menu.stream().collect(Collectors.partitioningBy(Dish::isVegetarian));
Optional.of(collect).ifPresent(System.out::println);

}

private static void testPartitioningByWithPredicateAndCollector() {
System.out.println("testPartitioningByWithPredicateAndCollector");
Map<Boolean, Double> collect = menu.stream()
.collect(Collectors.partitioningBy(Dish::isVegetarian, Collectors.averagingInt(Dish::getCalories)));
Optional.of(collect).ifPresent(System.out::println);
}

private static void testReducingBinaryOperator() {
System.out.println("testReducingBinaryOperator");
menu.stream().collect(
Collectors.reducing(
BinaryOperator.maxBy(
Comparator.comparingInt(Dish::getCalories)
)
)
).ifPresent(System.out::println);
}

private static void testReducingBinaryOperatorAndIdentiy() {
System.out.println("testReducingBinaryOperatorAndIdentiy");
Integer result = menu.stream()
.map(Dish::getCalories).collect(Collectors.reducing(0, (d1, d2) -> d1 + d2));
System.out.println(result);
}

private static void testReducingBinaryOperatorAndIdentiyAndFunction() {
System.out.println("testReducingBinaryOperatorAndIdentiyAndFunction");
Integer result = menu.stream().collect(Collectors.reducing(0, Dish::getCalories, (d1, d2) -> d1 + d2));
System.out.println(result);
}

private static void testSummarizingDouble() {
System.out.println("testSummarizingDouble");
Optional.of(menu.stream().collect(Collectors.summarizingDouble(Dish::getCalories)))
.ifPresent(System.out::println);
}

private static void testSummarizingLong() {
System.out.println("testSummarizingLong");
Optional.of(menu.stream().collect(Collectors.summarizingLong(Dish::getCalories)))
.ifPresent(System.out::println);
}

private static void testSummarizingInt() {
System.out.println("testSummarizingLong");
Optional.of(menu.stream().collect(Collectors.summarizingInt(Dish::getCalories)))
.ifPresent(System.out::println);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java8 Collectors