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);
}
}
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的学习计划---MyCollectorsAction-2
- java8的学习计划---MyCollectorsAction-5
- java8的学习计划---MyCollectorsAction-1
- Java8的学习计划--Streams vs MyNumericStream
- java8的学习计划---optional in action
- Java8的学习计划--StreamsInAction
- Java学习路线图,专为新手定制的Java学习计划建议
- 我的系统计划(静静学java)-java学习
- 专为新手定制的Java学习计划建议
- 转:Java学习路线图,专为新手定制的Java学习计划建议
- 专为新手定制的Java学习计划建议
- 转:Java学习路线图,专为新手定制的Java学习计划建议
- Java学习路线图,专为新手定制的Java学习计划建议
- 专为新手定制的Java学习计划建议
- java接口测试学习计划
- Java学习路线图,专为新手定制的Java学习计划建议
- JAVA学习计划3
- java的学习计划30天
- Java学习路线图,专为新手定制的Java学习计划建议
- java:struts学习(3)-jsp传递中文到action的解决方法,简易!!