Java8 新特性 Lambda学习
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学习的更多相关文章
- Java8新特性-Lambda表达式是什么?
目录 前言 匿名内部类 函数式接口 和 Lambda表达式语法 实现函数式接口并使用Lambda表达式: 所以Lambda表达式是什么? 实战应用 总结 前言 Java8新特性-Lambda表达式,好 ...
- 乐字节-Java8新特性-Lambda表达式
上一篇文章我们了解了Java8新特性-接口默认方法,接下来我们聊一聊Java8新特性之Lambda表达式. Lambda表达式(也称为闭包),它允许我们将函数当成参数传递给某个方法,或者把代码本身当作 ...
- java8新特性——Lambda表达式
上文中简单介绍了一下java8得一些新特性,与优点,也是为本次学习java8新特性制定一个学习的方向,后面几篇会根据上文中得新特性一一展开学习.本文就从java8新特性中比较重要的Lambda表达式开 ...
- java8新特性Lambda和Stream
Java8出来已经4年,但还是有很多人用上了jdk8,但并没用到里面的新东西,那不就等于没用?jdk8有许多的新特性,详细可看下面脑图 我只讲两个最重要的特性Lambda和Stram,配合起来用可以极 ...
- Java8 新特性 Lambda & Stream API
目录 Lambda & Stream API 1 Lambda表达式 1.1 为什么要使用lambda表达式 1.2 Lambda表达式语法 1.3 函数式接口 1.3.1 什么是函数式接口? ...
- Java8新特性: lambda 表达式介绍
一.lambda 表达式介绍 lambda 表达式是 Java 8 的一个新特性,可以取代大部分的匿名内部类,简化了匿名委托的使用,让你让代码更加简洁,优雅. 比较官方的定义是这样的: lambda ...
- Java8新特性 - Lambda表达式 - 基本知识
A lambda expression is an unnamed block of code (or an unnamed function) with a list of formal param ...
- Java8新特性 -- Lambda基础语法
Lambda 表达式的基础语法: Java8引入了一个新的操作符 “->” 该操作符称为箭头操作符或Lambda操作符, 该操作符将Lambda表达式拆分为两部分: 左侧: Lambda表达式 ...
- java8新特性-lambda表达式和stream API的简单使用
一.为什么使用lambda Lambda 是一个 匿名函数,我们可以把 Lambda表达式理解为是 一段可以传递的代码(将代码像数据一样进行传递).可以写出更简洁.更灵活的代码.作为一种更紧凑的代码风 ...
随机推荐
- django orm 操作
django的orm使用方便,但对于一些复杂的操作,需要遵循特定的规范,特例特别记录一下: 模型: from django.db import models class Blog(models.Mod ...
- Oracle的登录方式
1.本地登录 (1).用户名,密码登录: user:xxx password:xxx (2).指定用户名,密码登录: c:\>sqlplus sys/qac123QAC as sysdba; ...
- jQuery validate兼容IE8写法
最近做项目的时候遇到一个validate插件在IE8下面点击submit按钮没有执行检查的BUG 在chrome和FF,还有IE9以上都可以.百度了好多文章都没有找到解决方法,后面自己测试找到了问题. ...
- 如何在tpl模版的div块中加ztree
ld-ztree.tpl <div class="ld-ztree-container"> <div class="ld-ztree-header te ...
- jQuery EasyUI CheckBoxTree的级联选中
:子结点选中,父节点随之选中,父节点取消,子节点随之取消 代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/x ...
- 基于纹理的图片检索及demo(未启动)
基于纹理的图片检索及demo(未启动)
- (分享)Paxos在大型系统中常见的应用场景
原帖http://timyang.net/distributed/paxos-scenarios/ 在分布式算法领域,有个非常重要的算法叫Paxos, 它的重要性有多高呢,Google的Chubby ...
- SELinux查看、启用、关闭
SELinux查看.启用.关闭 查看SELinux状态: 1./usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态 SELinux ...
- 一些对数学领域及数学研究的个人看法(转载自博士论坛wcboy)
转自:http://www.math.org.cn/forum.php?mod=viewthread&tid=14819&extra=&page=1 原作者: wcboy 现在 ...
- Python描述符(descriptor)解密(转)
原文:http://www.geekfan.net/7862/ Python中包含了许多内建的语言特性,它们使得代码简洁且易于理解.这些特性包括列表/集合/字典推导式,属性(property).以及装 ...