1,首先定义Employee类。

package coffee.how.to.program.early.objects.chapter15;

public class Employee {

    private String firstName;
private String lastName;
private double salary;
private String department; // constructor
public Employee(String firstName, String lastName, double salary, String department) {
this.firstName = firstName;
this.lastName = lastName;
this.salary = salary;
this.department = department;
} // set firstName
public void setFirstName(String firstName) {
this.firstName = firstName;
} // get firstName
public String getFirstName() {
return firstName;
} // set lastName
public void setLastName(String lastName) {
this.lastName = lastName;
} // get lastName
public String getLastName() {
return lastName;
} // set salary
public void setSalary(double salary) {
this.salary = salary;
} // get salary
public double getSalary() {
return salary;
} // set department
public void setDepartment(String department) {
this.department = department;
} // get department
public String getDepartment() {
return department;
} // return Employee's first and last name combined
public String getName() {
return String.format("%s %s", getFirstName(), getLastName());
} // return a String containing the Employee's information
@Override
public String toString() {
return String.format("%-8s %-8s %8.2f %s", getFirstName(), getLastName(), getSalary(), getDepartment());
} // end method toString
} // end class Employee

2,对Employee类进行操作类。

package coffee.how.to.program.early.objects.chapter15;

/**
* 定义若干 Employee 实例并加入数组,
* 把数组转换成 list,
* 根据 Employee的Last Name 和 First Name 定义比较器。
* 使用 lambda 和 stream 对 Employee 类进行操作。
*/
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.function.Function;
import java.util.function.Predicate; public class ProcessingEmployees { public static void main(String[] args) {
// 定义Employee类数组
Employee[] employees = {
new Employee("Jason", "Red", 5000, "IT"),
new Employee("Ashley", "Green", 7600, "IT"),
new Employee("Matthew", "Indigo", 3587.5, "Sales"),
new Employee("James", "Indigo", 4700.77, "Marketing"),
new Employee("Luke", "Indigo", 6200, "IT"),
new Employee("Jason", "Blue", 3200, "Sales"),
new Employee("Wendy", "Brown", 4236.4, "Marketing") }; // 转换成list
List<Employee> list = Arrays.asList(employees); // 打印全部的Employee信息
System.out.println("Complete Employee List: ");
list.stream().forEach(System.out::println); System.out.println("-------------------------------"); // 定义函数式接口,返回boolean值,指定工资范围在大于等于4000小于等于6000的区间。
Predicate<Employee> four2SixThousand = e -> (e.getSalary() >= 4000 && e.getSalary() <= 6000); // 使用 stream 过滤,排序,再循环遍历打印。
list.stream().filter(four2SixThousand).sorted(Comparator.comparing(Employee::getSalary))
.forEach(System.out::println); // 打印比较器区间工资最小的Employee信息
System.out.printf("%nFirst employee who earns $4000-$6000:%n%s%n",
list.stream().filter(four2SixThousand).min(Comparator.comparing(Employee::getSalary)).get()); Function<Employee, String> byFirstName = Employee::getFirstName;
Function<Employee, String> byLastName = Employee::getLastName;
// 指定比较器比较规则
Comparator<Employee> lastThenFistComp = Comparator.comparing(byLastName).thenComparing(byFirstName); // 先根据last name 比较,如果相同,再比较 first name。
System.out.printf("%nEmployees in ascending order by last name then fist name: %n");
list.stream().sorted(lastThenFistComp).forEach(System.out::println); //先根据first name 比较,如果相同,再比较 last name。
System.out.printf("%nEmployees in descending order by last name then first:%n");
list.stream().sorted(lastThenFistComp.reversed()).forEach(System.out::println);
}
}

使用Java 8 Lambda表达式对Employee类进行操作的更多相关文章

  1. java使用lambda表达式对List集合进行操作(JDK1.8)

    1. 使用lambda表达式对List集合进行操作(JDK1.) List<TreeDto> collect = list.stream().filter(item -> item. ...

  2. Effective Java 第三版——42.lambda表达式优于匿名类

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  3. Java 终于有 Lambda 表达式啦~Java 8 语言变化——Lambda 表达式和接口类更改【转载】

    原文地址 en cn 下载 Demo Java™ 8 包含一些重要的新的语言功能,为您提供了构建程序的更简单方式.Lambda 表达式 为内联代码块定义一种新语法,其灵活性与匿名内部类一样,但样板文件 ...

  4. 深入探索Java 8 Lambda表达式

    2014年3月,Java 8发布,Lambda表达式作为一项重要的特性随之而来.或许现在你已经在使用Lambda表达式来书写简洁灵活的代码.比如,你可以使用Lambda表达式和新增的流相关的API,完 ...

  5. 深入浅出 Java 8 Lambda 表达式

    摘要:此篇文章主要介绍 Java8 Lambda 表达式产生的背景和用法,以及 Lambda 表达式与匿名类的不同等.本文系 OneAPM 工程师编译整理. Java 是一流的面向对象语言,除了部分简 ...

  6. Java 8 Lambda表达式10个示例【存】

    PS:不能完全参考文章的代码,请参考这个文件http://files.cnblogs.com/files/AIThink/Test01.zip 在Java 8之前,如果想将行为传入函数,仅有的选择就是 ...

  7. Java中Lambda表达式的使用

    简介(译者注:虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能.本人建议不要乱用,因 ...

  8. Java 8 Lambda 表达式

    Lambda 是啥玩意 简单来说,Lambda 就是一个匿名的方法,就这样,没啥特别的.它采用一种非常简洁的方式来定义方法.当你想传递可复用的方法片段时,匿名方法非常有用.例如,将一个方法传递给另外一 ...

  9. java 8 Lambda表达式(翻译自Stackoverflow)

    (原文链接)Lambda只能作用于一个只有一个抽象方法的函数式接口(Function Interface),不过函数式接口可以有任意数量default或static修饰的方法(因此,它们有时也被当做单 ...

随机推荐

  1. VHDL学习札记:library and Package

     参考:http://www.cnblogs.com/garylee/archive/2012/11/16/2773596.htmlhttp:// http://forums.xilinx.com ...

  2. 破解金盘gdlisxp系统

    1.现在要破解的金盘gdlisxp系统版本 2.首先在你电脑上要有脱壳工具AspackDie,和OllyDBG动态调试工具,电脑上装好金盘软件. 3.用AspackDie进行对金盘应用程序脱壳处理,生 ...

  3. 网页打包安卓APP流程

    搭建环境过程: 1. 安装JDK. 参见http://www.cnblogs.com/Li-Cheng/p/4334985.html. 注:实质上到该网址上下载好JDK安装包,安装后添加一个环境变量: ...

  4. 学习c的第6天2

    #include <stdio.h> #include <math.h> int main() { float num; printf("请输入该生当月的消费额:\n ...

  5. 关于PYTHON_EGG_CACHE无权限的问题

    Perhaps your account does not have write access to this directory? You can change the cache director ...

  6. 浅谈DEs,AES

    1. AES加密,相对比较简单,之前已经配置好工具类. package com.bbguoxue.poetry.util; import java.security.SecureRandom; imp ...

  7. 淘宝:OceanBase分布式系统负载均衡案例分享

    Heroku因"随机调度+Rails单线程处理导致延迟增加的负载均衡失败"的案例之后,我们在思考:在负载均衡测试时发现问题并妥善解决的成功经验有没有?于是,挖掘出"淘宝在 ...

  8. LaTeX插入jpg图片: 使用graphicx

    首先要包含宏包 \usepackage{graphicx} \begin{figure}[ht!] \centering \includegraphics[width=90mm]{fixed_dome ...

  9. [笔记]--Sublime Text 2使用技巧

    Sublime个人喜好设置: 在打开个人设置页面Preferences >> Settings - User,加入以下内容: { , //TAB键,4个空格 "translate ...

  10. python2 编码问题详解

    实例对比 定义 type str unicode print encode('utf8') decode('utf8') encode('unicode-escape') encode('string ...