import java.util.ArrayList;
import java.util.Collections;
import java.util.IntSummaryStatistics;
import java.util.List;
import java.util.stream.Collectors;

public class TestLambda
{   
    public static void main(String[] args)
    {
        List<Employee> employees = new ArrayList<Employee>();
        employees.add(new Employee("张三", "男", 25));
        employees.add(new Employee("李四", "女", 24));
        employees.add(new Employee("王五", "女", 23));
        employees.add(new Employee("周六", "男", 22));
        employees.add(new Employee("孙七", "女", 21));
        employees.add(new Employee("刘八", "男", 20));
        // ---------------------------------------------- 输出employees
        System.out.println("##############输出employees##############");
        employees.forEach(e -> System.out.println(e));
        System.out.println("----------------------------------------------");
        employees.stream().forEach(e -> System.out.println(e));
        // ---------------------------------------------- 按年龄排序
        System.out.println("##############按年龄排序##############");
        Collections.sort(employees, (e1, e2) -> e1.getAge() - e2.getAge());
        employees.forEach(e -> System.out.println(e));
        System.out.println("----------------------------------------------");
        employees.stream().sorted((e1, e2) -> e1.getAge() - e2.getAge()).forEach(e -> System.out.println(e));
        // ---------------------------------------------- 打印年龄最大的女员工
        System.out.println("##############打印年龄最大的女员工##############");
        Employee maxAgeFemaleEmployee =
            employees.stream().filter(e -> "女".equals(e.getSex())).max((e1, e2) -> e1.getAge() - e2.getAge()).get();
        System.out.println(maxAgeFemaleEmployee);
        // ---------------------------------------------- 打印出年龄最大的2名男员工
        System.out.println("##############打印出年龄最大的2名男员工##############");
        employees.stream()
            .filter(e -> "男".equals(e.getSex()))
            .sorted((e1, e2) -> e2.getAge() - e1.getAge())
            .limit(2)
            .forEach(e -> System.out.println(e));
        // ---------------------------------------------- 打印出所有男员工的姓名,使用 ,分隔
        System.out.println("##############打印出所有男员工的姓名,使用 ,分隔##############");
        String maleEmployeesNames = employees.stream().map(e -> e.getName()).collect(Collectors.joining(","));
        System.out.println(maleEmployeesNames);       
        // ---------------------------------------------- 统计信息
        System.out.println("##############统计信息##############");
        IntSummaryStatistics stat = employees.stream().mapToInt(Employee::getAge).summaryStatistics();
        System.out.println("员工总数:" + stat.getCount());
        System.out.println("最高年龄:" + stat.getMax());
        System.out.println("最小年龄:" + stat.getMin());
        System.out.println("平均年龄:" + stat.getAverage());
    }
}

public class Employee
{
    private String name;
    
    private String sex;
    
    private int age;
    
    public Employee(String name, String sex, int age)
    {
        super();
        this.name = name;
        this.sex = sex;
        this.age = age;
    }
    
    public String getName()
    {
        return name;
    }
    
    public String getSex()
    {
        return sex;
    }
    
    public int getAge()
    {
        return age;
    }
    
    @Override
    public String toString()
    {
        StringBuilder builder = new StringBuilder();
        builder.append("Employee {name=")
            .append(name)
            .append(", sex=")
            .append(sex)
            .append(", age=")
            .append(age)
            .append("}");
        return builder.toString();
    }
}

Java8 新特性 Lambda学习的更多相关文章

  1. Java8新特性-Lambda表达式是什么?

    目录 前言 匿名内部类 函数式接口 和 Lambda表达式语法 实现函数式接口并使用Lambda表达式: 所以Lambda表达式是什么? 实战应用 总结 前言 Java8新特性-Lambda表达式,好 ...

  2. 乐字节-Java8新特性-Lambda表达式

    上一篇文章我们了解了Java8新特性-接口默认方法,接下来我们聊一聊Java8新特性之Lambda表达式. Lambda表达式(也称为闭包),它允许我们将函数当成参数传递给某个方法,或者把代码本身当作 ...

  3. java8新特性——Lambda表达式

    上文中简单介绍了一下java8得一些新特性,与优点,也是为本次学习java8新特性制定一个学习的方向,后面几篇会根据上文中得新特性一一展开学习.本文就从java8新特性中比较重要的Lambda表达式开 ...

  4. java8新特性Lambda和Stream

    Java8出来已经4年,但还是有很多人用上了jdk8,但并没用到里面的新东西,那不就等于没用?jdk8有许多的新特性,详细可看下面脑图 我只讲两个最重要的特性Lambda和Stram,配合起来用可以极 ...

  5. Java8 新特性 Lambda & Stream API

    目录 Lambda & Stream API 1 Lambda表达式 1.1 为什么要使用lambda表达式 1.2 Lambda表达式语法 1.3 函数式接口 1.3.1 什么是函数式接口? ...

  6. Java8新特性: lambda 表达式介绍

    一.lambda 表达式介绍 lambda 表达式是 Java 8 的一个新特性,可以取代大部分的匿名内部类,简化了匿名委托的使用,让你让代码更加简洁,优雅. 比较官方的定义是这样的: lambda ...

  7. Java8新特性 - Lambda表达式 - 基本知识

    A lambda expression is an unnamed block of code (or an unnamed function) with a list of formal param ...

  8. Java8新特性 -- Lambda基础语法

    Lambda 表达式的基础语法: Java8引入了一个新的操作符 “->”  该操作符称为箭头操作符或Lambda操作符, 该操作符将Lambda表达式拆分为两部分: 左侧: Lambda表达式 ...

  9. java8新特性-lambda表达式和stream API的简单使用

    一.为什么使用lambda Lambda 是一个 匿名函数,我们可以把 Lambda表达式理解为是 一段可以传递的代码(将代码像数据一样进行传递).可以写出更简洁.更灵活的代码.作为一种更紧凑的代码风 ...

随机推荐

  1. PHP数据类型

    在PHP中,一共支持8种数据类型:整型,浮点型,布尔型,字符串型,数组,对象,空类型(NULL),资源型 标量类型 int(integet)整数类型 整型数据:在内存中占4个字节,也就是32个bit位 ...

  2. vs中使用openGL

    一.准备工作 创建Empty Project,为了能够使用OpenGL的库函数,需要把相关的库连接到项目中: 1.首先添加库的路径 如上,可以把需要添加的include.lib放到一起比较方便管理 这 ...

  3. arcgis_engine_c++_runtime_r6034_error

    在启动项目中添加app.manifest文件 <?xml version="1.0" encoding="utf-8"?> <asmv1:as ...

  4. web开发以及分布式开发C/S B/S系统结构

    分布式开发,由客户端发送请求给服务端,经服务端进行请求处理后返回处理结果(远程方法调用),在客户端发送请求,获取httpclient/okclient对象,传入参数(URL以及其余参数等),发送请求  ...

  5. jenkins:通过execute shell启动的进程会被杀死的问题

    [问题]在jenkins中配置自动更新部署项目时,如果采取用execute shell启动/关闭tomcat,会发现可以进行关闭tomcat,但是无法启动tomcat,虽然构建会显示执行成功,但是查看 ...

  6. Java 7 新特性

    try( InputStream is = new FileInputStream(path); XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is); ) ...

  7. php 判断文件/目录是否存的方法

    涉及函数 is_file(), is_dir() , file_exists() is_file() 判断文件是否存在 is_dir() 判断目录是否存在 file_exists() 既可用于判断文件 ...

  8. Foundation框架—数据类(NSData)

    一 NSData的使用 .string -> data     NSString *str = @"changxiangweilai";     NSData *data = ...

  9. ES6学习笔记(2)

    变量的解构赋值 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,被称为解构(Destructuring); 数组的解构赋值 let [a, b, c] = [1, 2, 3]; cons ...

  10. [PHP]使用PHPMailer发送带附件并支持HTML内容的邮件

    来源:http://www.helloweba.com/view-blog-205.html PHPMailer是一个封装好的PHP邮件发送类,支持发送HTML内容的电子邮件,以及可以添加附件发送,并 ...