多了不说直接上代码

package com.example.demo;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.IntSummaryStatistics;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.stream.Collectors;

public class Test {

public static void main(String[] args) {
        List<Person> javaProgrammers = new ArrayList<Person>() {
            private static final long serialVersionUID = 1L;
            {
                add(new Person("Elsdon", "Jaycob", "Java programmer", "male",
                        43, 2000));
                add(new Person("Tamsen", "Brittany", "Java programmer",
                        "female", 23, 1500));
                add(new Person("Floyd", "Donny", "Java programmer", "male", 33,
                        1800));
                add(new Person("Sindy", "Jonie", "Java programmer", "female",
                        32, 1600));
                add(new Person("Vere", "Hervey", "Java programmer", "male", 22,
                        1200));
                add(new Person("Maude", "Jaimie", "Java programmer", "female",
                        27, 1900));
                add(new Person("Shawn", "Randall", "Java programmer", "male",
                        30, 2300));
                add(new Person("Jayden", "Corrina", "Java programmer", "female",
                        35, 1700));
                add(new Person("Palmer", "Dene", "Java programmer", "male", 33,
                        2000));
                add(new Person("Addison", "Pam", "Java programmer", "female",
                        34, 1300));
            }
        };
        List<Person> phpProgrammers = new ArrayList<Person>() {
            private static final long serialVersionUID = 1L;
            {
                int i = 0;
                while (i < 100) {
                    add(new Person("Jarrod_" + i, "Pace", "PHP programmer",
                            "male", 34, 1550));
                    i++;
                }
                add(new Person("Jarrod", "Pace", "PHP programmer", "male", 34,
                        1550));
                add(new Person("Clarette", "Cicely", "PHP programmer", "female",
                        23, 1200));
                add(new Person("Victor", "Channing", "PHP programmer", "male",
                        32, 1600));
                add(new Person("Tori", "Sheryl", "PHP programmer", "female", 21,
                        1000));
                add(new Person("Osborne", "Shad", "PHP programmer", "male", 32,
                        1100));
                add(new Person("Rosalind", "Layla", "PHP programmer", "female",
                        25, 1300));
                add(new Person("Fraser", "Hewie", "PHP programmer", "male", 36,
                        1100));
                add(new Person("Quinn", "Tamara", "PHP programmer", "female",
                        21, 1000));
                add(new Person("Alvin", "Lance", "PHP programmer", "male", 38,
                        1600));
                add(new Person("Evonne", "Shari", "PHP programmer", "female",
                        40, 1800));
            }
        };
        System.out.println("所有程序员的姓名:");
        javaProgrammers.forEach((p) -> System.out.printf("%s %s; ",
                p.getFirstName(), p.getLastName()));
        phpProgrammers.forEach((p) -> System.out.printf("%s %s; ",
                p.getFirstName(), p.getLastName()));

System.out.println("给程序员加薪 5% :");
        Consumer<Person> giveRaise = e -> e
                .setSalary(e.getSalary() / 100 * 5 + e.getSalary());

javaProgrammers.forEach(giveRaise.andThen(e -> System.out.println(e)));
        phpProgrammers.forEach(giveRaise.andThen(e -> System.out.println(e)));

// filters
        System.out.println("下面是月薪超过 $1,400 的PHP程序员:");
        phpProgrammers.stream().filter((p) -> (p.getSalary() > 1400))
                .forEach((p) -> System.out.printf("%s %s; ", p.getFirstName(),
                        p.getLastName()));

// filters
        Predicate<Person> ageFilter = (p) -> (p.getAge() > 25);
        Predicate<Person> salaryFilter = (p) -> (p.getSalary() > 1400);
        Predicate<Person> genderFilter = (
                p) -> ("female".equals(p.getGender()));

System.out.println("下面是年龄大于 24岁且月薪在$1,400以上的女PHP程序员:");
        phpProgrammers.stream().filter(ageFilter).filter(salaryFilter)
                .filter(genderFilter).forEach((p) -> System.out
                        .printf("%s %s; ", p.getFirstName(), p.getLastName()));

// filters
        System.out.println("年龄大于 24岁的女性 Java programmers:");
        javaProgrammers.stream().filter(ageFilter).filter(genderFilter)
                .forEach((p) -> System.out.printf("%s %s; ", p.getFirstName(),
                        p.getLastName()));
        // limit
        System.out.println("最前面的3个 Java programmers:");
        javaProgrammers.stream().limit(3).forEach((p) -> System.out
                .printf("%s %s; ", p.getFirstName(), p.getLastName()));

System.out.println("最前面的3个女性 Java programmers:");
        javaProgrammers.stream().filter(genderFilter).limit(3)
                .forEach((p) -> System.out.printf("%s %s; ", p.getFirstName(),
                        p.getLastName()));

// sorted
        System.out.println("根据 name 排序,并显示前5个 Java programmers:");
        List<Person> sortedJavaProgrammers = javaProgrammers.stream().sorted(
                (p, p2) -> (p.getFirstName().compareTo(p2.getFirstName())))
                .limit(5).collect(Collectors.toList());

sortedJavaProgrammers.forEach((p) -> System.out.printf("%s %s; %n",
                p.getFirstName(), p.getLastName()));

// Collectors.toList
        System.out.println("根据 salary 排序 Java programmers:");
        sortedJavaProgrammers = javaProgrammers.stream()
                .sorted((p, p2) -> (p.getSalary() - p2.getSalary()))
                .collect(Collectors.toList());

sortedJavaProgrammers.forEach((p) -> System.out.printf("%s %s; %n",
                p.getFirstName(), p.getLastName()));

// min
        System.out.println("工资最低的 Java programmer:");
        Person pers = javaProgrammers.stream()
                .min((p1, p2) -> (p1.getSalary() - p2.getSalary())).get();

System.out.printf("Name: %s %s; Salary: $%,d.", pers.getFirstName(),
                pers.getLastName(), pers.getSalary());

// max
        System.out.println("工资最高的 Java programmer:");
        Person person = javaProgrammers.stream()
                .max((p, p2) -> (p.getSalary() - p2.getSalary())).get();

System.out.printf("Name: %s %s; Salary: $%,d.", person.getFirstName(),
                person.getLastName(), person.getSalary());

// Collectors.joining
        System.out.println("将 PHP programmers 的 first name 拼接成字符串:");
        String phpDevelopers = phpProgrammers.stream().map(Person::getFirstName)
                .collect(Collectors.joining(" ; ")); // 在进一步的操作中可以作为标记(token)

// Collectors.toSet
        System.out.println("将 Java programmers 的 first name 存放到 Set:");
        Set<String> javaDevFirstName = javaProgrammers.stream()
                .map(Person::getFirstName).collect(Collectors.toSet());

// Collectors.toCollection
        System.out.println("将 Java programmers 的 first name 存放到 TreeSet:");
        TreeSet<String> javaDevLastName = javaProgrammers.stream()
                .map(Person::getLastName)
                .collect(Collectors.toCollection(TreeSet::new));

// parallelStream
        System.out.println("计算付给 Java programmers 的所有money:");
        int totalSalary = javaProgrammers.parallelStream()
                .mapToInt(p -> p.getSalary()).sum();

// 计算 count, min, max, sum, and average for numbers
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
        IntSummaryStatistics stats = numbers.stream().mapToInt((x) -> x)
                .summaryStatistics();

System.out.println("List中最大的数字 : " + stats.getMax());
        System.out.println("List中最小的数字 : " + stats.getMin());
        System.out.println("所有数字的总和   : " + stats.getSum());
        System.out.println("所有数字的平均值 : " + stats.getAverage());
    }

public static class Person {

private String firstName, lastName, job, gender;
        private int salary, age;

public Person(String firstName, String lastName, String job,
                String gender, int age, int salary) {
            this.firstName = firstName;
            this.lastName = lastName;
            this.gender = gender;
            this.age = age;
            this.job = job;
            this.salary = salary;
        }

public String getFirstName() {
            return firstName;
        }

public void setFirstName(String firstName) {
            this.firstName = firstName;
        }

public String getLastName() {
            return lastName;
        }

public void setLastName(String lastName) {
            this.lastName = lastName;
        }

public String getJob() {
            return job;
        }

public void setJob(String job) {
            this.job = job;
        }

public String getGender() {
            return gender;
        }

public void setGender(String gender) {
            this.gender = gender;
        }

public int getSalary() {
            return salary;
        }

public void setSalary(int salary) {
            this.salary = salary;
        }

public int getAge() {
            return age;
        }

public void setAge(int age) {
            this.age = age;
        }

@Override
        public String toString() {
            return "Person [firstName=" + firstName + ", lastName=" + lastName
                    + ", job=" + job + ", gender=" + gender + ", salary="
                    + salary + ", age=" + age + "]";
        }

}
}

JAVA lambda 简单例子相关推荐

  1. Java Lambda reduce 例子 全网reduce最清晰易懂的例子,不服来辩 xxx XXX

    Java Lambda reduce 例子 全网reduce最清晰易懂的例子,不服来辩 xxx XXX import java.util.Optional; import java.util.stre ...

  2. Java Lambda 分区 例子 水仙花

    Java Lambda 分区 例子 水仙花 水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI).自恋数. ...

  3. Java Socket简单例子、readLine()、readUTF()

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/51752701 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的 ...

  4. Java序列化简单例子

    首先来看看要序列化的对象 Person.java package com.zjut.yunfeiyang; import java.io.Serializable; public class Pers ...

  5. java多态简单例子6_Java_6、面向对象——继承和多态

    继承 •继承是面向对象编程的三大特征之一,是一种基于已有类来创建新类的机制.由继承而得到的类称为子类(或派生类),被继承的类称为父类(或超类). •Java中每个类只允许有一个父类.语法如下:clas ...

  6. java c 简单例子_通过一个简单的例子来理解C语言中的LAPACK调用

    我是LAPACK和C / Fortran接口的初学者 . 我需要在Mac OS-X Lion上使用LAPACK / BLAS解决线性方程和特征值问题 . OS-X Lion提供优化的BLAS和LAPA ...

  7. java多态的简单例子_要JAVA的简单例子,继承\多态的,详细讲解运行的每一步

    java中的多态是动态绑定的,也就是说在编译期不能确定一个方法的执行体是哪个方法(在继承中重写的方法).执行果支委会根据在堆上分配的的引用去寻找方法体,所以产生你你所不想要的结果是正常的也是正确的.改 ...

  8. java 存储过程简单例子

    ---创建表 create table TESTTABLE (   id1  VARCHAR2(12),   name VARCHAR2(32) ) select t.id1,t.name from ...

  9. java hashtable import,Hashtable的一个简单例子

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 以下是关于Hashtable的简单例子,谁知道别的遍历Hashtable的方法,请回复! package no1; import java.util.En ...

最新文章

  1. 当写了五百行代码忘记保存时…… | 每日趣闻
  2. 基于HOG-LBP特征融合的头肩检测研究
  3. 利用反射实现对象调用方法
  4. mysql设置user_name唯一_mysql如何设置唯一性
  5. unity android so热更,惊鸿哥的港湾
  6. 力扣-268 丢失的数字
  7. 字符串格式参数的日期比较函数
  8. 在Visual Studio里设置VA助手(VAssistX)的快捷键
  9. 【运筹学】产销平衡问题的表上作业法
  10. 新浪微博api接口java_Java调用新浪微博API【转】
  11. Moore-Penrose广义逆(加号广义逆)定义及相关性质
  12. 用html给图片加像素,更改照片像素和大小
  13. thinkadmin打印sql语句调试sql
  14. brew_install.rb 安装brew的文件
  15. 数据仓库—stg层_数据仓库(一):认识数据仓库
  16. 教师资格证考试科目汇总
  17. P13、14-Windows与网络基础-NTFS之文件、文件夹权限
  18. Linux 单独编译驱动模块(ko文件)
  19. ORACLE学习笔记(6)(分析函数)
  20. Ubuntu16.04使用大恒工业相机

热门文章

  1. Android手机usb口清洗,Android手机有什么方法通过USB接口共享PC的网络
  2. Windows11 安装使用VMware 失败
  3. hive读取es数据
  4. Vue集成markdown
  5. CJCMS系列---说说项目中的缓存实现(1)
  6. 项目人力资源管理范文
  7. ubuntu study
  8. 通过ansible剧本自动化离线部署Elasticsearch
  9. 曙光计算机能玩游戏吗,PS4独占游戏《地平线:零之曙光》登陆PC 引发主机玩家不满...
  10. 写数据到word模板代码