登录/注册
唐某
11055
占位
7
占位
31
浏览量
占位
粉丝
占位
关注
Lambda表达式总结
唐某
2020-11-10 13:31:12 2020-11-10
158
0

原文:https://blog.csdn.net/zxzxzx0119/article/details/82392396

# Lambda表达式总结


一、使用范例以及例子

使用匿名内部类:

Comparator<Integer>com = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) { //降序排列
return Integer.compare(o2,o1);
}
};

使用Lambda表达式:

 Comparator<Integer> com = (x, y) -> Integer.compare(y, x);

下面给出一个例子来引入Lambda表达式

给出一个Employee类,有name、age、salary三个属性:

public class Employee {
private String name;
private int age;
private double salary;
public Employee() {
}
public Employee(String name, int age, double salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public double getSalary() {
return salary;
}
@Override
public String toString() {
return "name='" + name + '\'' +
", age=" + age +
", salary=" + salary;
}
}

然后我们需要通过限制查询数据:

  • 比如查询年龄>25岁的所有员工的信息;
  • 再如查询工资>4000的员工信息;

首先给出一个List集合类模拟数据库表:

//将数组转换成集合的
List<Employee> employees = Arrays.asList(
new Employee("张三",23,3333.33),
new Employee("李四",24,4444.44),
new Employee("王五",25,5555.55),
new Employee("赵六",26,6666.66),
new Employee("田七",27,7777.77)
);

1、原始方法

然后我们写分别查询出年龄大于25岁的员工信息和工资大于4000的员工信息,发现findEmployeesByAgefindEmployeesBySalary两个方法代码非常的相似,只有查询条件不同,所以这个方法是不太可取的

```java

public void test3(){
//年龄
List list = findEmployeesByAge(employees);
for(Employee emp : list){
System.out.println(emp);
}
//工资
System.out.println("---------------------");
List list2 = findEmployeesBySalary(employees);
for(Employee emp : list2){
System.out.println(emp);
}
}

//原始方法 : 查询出年龄大于25岁的(这个是最原始的方法)

public List findEmployeesByAge(Listlist){
Listemps = new ArrayList<>();
for(Employee emp : list){
if(emp.getAge() > 25){
emps.add(emp);
}
}
return emps;
}

//原始方法 : 查询出工资大于4000的(这个是最原始的方法)

//和上面的方法唯一的差别只有年龄和工资的改动,代码冗余
public List findEmployeesBySalary(Listlist){
Listemps = new ArrayList<>();

暂无评论