1. 定义实体类

  1. package com.atguigu.java8;
  2.  
  3. public class Employee {
  4.  
  5. private int id;
  6. private String name;
  7. private int age;
  8. private double salary;
  9.  
  10. public Employee() {
  11. }
  12.  
  13. public Employee(String name) {
  14. this.name = name;
  15. }
  16.  
  17. public Employee(String name, int age) {
  18. this.name = name;
  19. this.age = age;
  20. }
  21.  
  22. public Employee(int id, String name, int age, double salary) {
  23. this.id = id;
  24. this.name = name;
  25. this.age = age;
  26. this.salary = salary;
  27. }
  28.  
  29. public int getId() {
  30. return id;
  31. }
  32.  
  33. public void setId(int id) {
  34. this.id = id;
  35. }
  36.  
  37. public String getName() {
  38. return name;
  39. }
  40.  
  41. public void setName(String name) {
  42. this.name = name;
  43. }
  44.  
  45. public int getAge() {
  46. return age;
  47. }
  48.  
  49. public void setAge(int age) {
  50. this.age = age;
  51. }
  52.  
  53. public double getSalary() {
  54. return salary;
  55. }
  56.  
  57. public void setSalary(double salary) {
  58. this.salary = salary;
  59. }
  60.  
  61. public String show() {
  62. return "测试方法引用!";
  63. }
  64.  
  65. @Override
  66. public int hashCode() {
  67. final int prime = ;
  68. int result = ;
  69. result = prime * result + age;
  70. result = prime * result + id;
  71. result = prime * result + ((name == null) ? : name.hashCode());
  72. long temp;
  73. temp = Double.doubleToLongBits(salary);
  74. result = prime * result + (int) (temp ^ (temp >>> ));
  75. return result;
  76. }
  77.  
  78. @Override
  79. public boolean equals(Object obj) {
  80. if (this == obj)
  81. return true;
  82. if (obj == null)
  83. return false;
  84. if (getClass() != obj.getClass())
  85. return false;
  86. Employee other = (Employee) obj;
  87. if (age != other.age)
  88. return false;
  89. if (id != other.id)
  90. return false;
  91. if (name == null) {
  92. if (other.name != null)
  93. return false;
  94. } else if (!name.equals(other.name))
  95. return false;
  96. if (Double.doubleToLongBits(salary) != Double.doubleToLongBits(other.salary))
  97. return false;
  98. return true;
  99. }
  100.  
  101. @Override
  102. public String toString() {
  103. return "Employee [id=" + id + ", name=" + name + ", age=" + age + ", salary=" + salary + "]";
  104. }
  105.  
  106. }

2. 测试类

  1. package com.atguigu.java8;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.Comparator;
  6. import java.util.List;
  7. import java.util.TreeSet;
  8.  
  9. import org.junit.Test;
  10.  
  11. public class TestLambda1 {
  12.  
  13. List<Employee> emps = Arrays.asList(
  14. new Employee(, "张三", , 9999.99),
  15. new Employee(, "李四", , 6666.66),
  16. new Employee(, "王五", , 3333.33),
  17. new Employee(, "赵六", , 7777.77),
  18. new Employee(, "田七", , 5555.55)
  19. );
  20.  
  21. //需求:获取公司中年龄小于 35 的员工信息
  22. public List<Employee> filterEmployeeAge(List<Employee> emps){
  23. List<Employee> list = new ArrayList<>();
  24.  
  25. for (Employee emp : emps) {
  26. if(emp.getAge() <= ){
  27. list.add(emp);
  28. }
  29. }
  30.  
  31. return list;
  32. }
  33.  
  34. //需求:获取公司中工资大于 5000 的员工信息
  35. public List<Employee> filterEmployeeSalary(List<Employee> emps){
  36. List<Employee> list = new ArrayList<>();
  37.  
  38. for (Employee emp : emps) {
  39. if(emp.getSalary() >= ){
  40. list.add(emp);
  41. }
  42. }
  43.  
  44. return list;
  45. }
  46.  
  47. //优化方式四:Stream API
  48. @Test
  49. public void test7(){
  50. emps.stream()
  51. .filter((e) -> e.getAge() <= )
  52. .forEach(System.out::println);
  53.  
  54. System.out.println("----------------------------------------------");
  55.  
  56. emps.stream()
  57. .map(Employee::getName)
  58. .limit()
  59. .sorted()
  60. .forEach(System.out::println);
  61. }
  62. }

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表达式和stream API的简单使用

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

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

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

随机推荐

  1. 【高德地图API】SDK v1.1.1 在代码中设置Map中心点Center级别不起作用

    有时候你在初始化地图时不是直接在xaml中设置Map的Center,而是在cs代码中设置Center或者设置SetZoomAndCenter改变中心点和缩放级别.你可能会发现,不起作用. 这边提出的解 ...

  2. TCP/IP的排头兵――地址解析协议(ARP) (转载)

    转自:http://blog.csdn.net/wangxg_7520/article/details/2488442 一.引言 古人行军打仗,都要有一个可以引领队伍前进方向的排头兵,在TCP/IP网 ...

  3. bzoj 2165: 大楼【Floyd+矩阵乘法+倍增+贪心】

    1<<i的结果需要是long long的话i是long long是没用的--要写成1ll<<i--我别是个傻子吧 虽然写的是二进制贪心,但是我觉得二分可能更好写吧(但是会慢) ...

  4. Extjs grid禁用头部点击三角下拉菜单

    表格头部的三角在点击的时候禁止出现下拉菜单,给每一列添加属性menuDisabled:true xtype:'grid', enableColumnResize:false, columns:[ {t ...

  5. OpenGL 2D模式

    // // left top 这里设置的默认是左上角 // void push_view2d(int left, int top, int width, int height) { //glPushA ...

  6. [SQL必知必会] 读书笔记

    第1课 数据库 这一课介绍SQL究竟是什么,它能做什么事情.   1.1 数据库基础 下面是一些数据库概念的简要介绍,如果你刚开始接触数据库,可以由此了解必需的基本知识.   1.1.1 数据库 数据 ...

  7. 303 Range Sum Query - Immutable 区域和检索 - 不可变

    给定一个数组,求出数组从索引 i 到 j  (i ≤ j) 范围内元素的总和,包含 i,  j 两点.例如:给定nums = [-2, 0, 3, -5, 2, -1],求和函数为sumRange() ...

  8. SQL中CRUD C——create 添加数据 R——read 读取数据 U——update 修改数据 D——delete 删除数据

    在SQL server中对数据库的操作: 删除表:drop table 表名修改表:alter table 表名 添加列add 列名 列类型alter table 表名 drop column 列名 ...

  9. Docker (1) 基本概念和安装

    Docker简介 什么是容器? 一种虚拟化的方案,操作系统级别的虚拟化.容器是一个轻量的.独立的.可执行的包,包含了执行它所需要的所有东西:代码.运行环境.系统工具.系统库.设置.很长一段时间中,容器 ...

  10. Modbus通讯协议简介

    Modbus协议简介 Modbus协议最初由Modicon公司开发出来,此协议支持传统的RS-232.RS-422.RS-485和以太网设备,许多工业设备,包括PLC,DCS,智能仪表等都在使用Mod ...