zoukankan      html  css  js  c++  java
  • Java8-Stream-No.11

    import java.util.Arrays;
    import java.util.List;
    
    public class Streams11 {
    
        static class Person {
            String name;
            int age;
    
            Person(String name, int age) {
                this.name = name;
                this.age = age;
            }
    
            @Override
            public String toString() {
                return name;
            }
        }
    
        public static void main(String[] args) {
            List<Person> persons =
                Arrays.asList(
                    new Person("Max", 18),
                    new Person("Peter", 23),
                    new Person("Pamela", 23),
                    new Person("David", 12));
    
    //        test1(persons);
    //        test2(persons);
    //        test3(persons);
    //        test4(persons);
    //        test5(persons);
            test6(persons);
        }
    
        private static void test1(List<Person> persons) {
            persons
                .stream()
                .reduce((p1, p2) -> p1.age > p2.age ? p1 : p2)
                .ifPresent(System.out::println);    // Pamela
        }
    
        private static void test2(List<Person> persons) {
            Person result =
                persons
                    .stream()
                    .reduce(new Person("", 0), (p1, p2) -> {
                        p1.age += p2.age;
                        p1.name += p2.name;
                        return p1;
                    });
    
            System.out.format("name=%s; age=%s", result.name, result.age);
        }
    
        private static void test3(List<Person> persons) {
            Integer ageSum = persons
                .stream()
                .reduce(0, (sum, p) -> sum += p.age, (sum1, sum2) -> sum1 + sum2);
    
            System.out.println(ageSum);
        }
    
        private static void test4(List<Person> persons) {
            Integer ageSum = persons
                .stream()
                .reduce(0,
                    (sum, p) -> {
                        System.out.format("accumulator: sum=%s; person=%s
    ", sum, p);
                        return sum += p.age;
                    },
                    (sum1, sum2) -> {
                        System.out.format("combiner: sum1=%s; sum2=%s
    ", sum1, sum2);
                        return sum1 + sum2;
                    });
    
            System.out.println(ageSum);
        }
    
        private static void test5(List<Person> persons) {
            Integer ageSum = persons
                .parallelStream()
                .reduce(0,
                    (sum, p) -> {
                        System.out.format("accumulator: sum=%s; person=%s
    ", sum, p);
                        return sum += p.age;
                    },
                    (sum1, sum2) -> {
                        System.out.format("combiner: sum1=%s; sum2=%s
    ", sum1, sum2);
                        return sum1 + sum2;
                    });
    
            System.out.println(ageSum);
        }
    
        private static void test6(List<Person> persons) {
            Integer ageSum = persons
                .parallelStream()
                .reduce(0,
                    (sum, p) -> {
                        System.out.format("accumulator: sum=%s; person=%s; thread=%s
    ",
                            sum, p, Thread.currentThread().getName());
                        return sum += p.age;
                    },
                    (sum1, sum2) -> {
                        System.out.format("combiner: sum1=%s; sum2=%s; thread=%s
    ",
                            sum1, sum2, Thread.currentThread().getName());
                        return sum1 + sum2;
                    });
    
            System.out.println(ageSum);
        }
    }
    
  • 相关阅读:
    Linux 学习 step by step (1)
    ubuntu server nginx 安装与配置
    ubuntu server samba服务器配置
    iOS app集成支付宝支付流程及后台php订单签名处理
    mac 连接windows 共享内容
    linux 文件查找,which,whereis,locate,find
    ubuntu server vsftpd 虚拟用户及目录
    ubuntu server 安装 mantis bug tracker 中文配置
    ubuntu server vsftpd 匿名用户上传下载及目录设置
    linux 用户管理,用户权限管理,用户组管理
  • 原文地址:https://www.cnblogs.com/bilaisheng/p/10210927.html
Copyright © 2011-2022 走看看