概念
Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的 Java 代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构。
JDK 也提供了大量的内置函数式接口供我们使用,使得 Lambda 表达式的运用更加方便、高效。
实例一:
public class LambdaTest2 {
public static void main(String[] args) {
LambdaTest2 lambdaTest = new LambdaTest2();
lambdaTest.test2();
}
public void test1() {
Comparator<String> comparable = new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return Integer.compare(o1.length(), o2.length());
}
};
TreeSet<String> treeSet = new TreeSet<>(comparable);
treeSet.add("zhangsan");
treeSet.add("lisi");
treeSet.add("wangwu");
treeSet.add("zhaoliu");
for (String s : treeSet) {
System.out.println(s);
}
}
public void test2() {
Comparator<String> comparable = (x, y) -> Integer.compare(x.length(), y.length());
TreeSet<String> treeSet = new TreeSet<>(comparable);
treeSet.add("zhangsan");
treeSet.add("lisi");
treeSet.add("wangwu");
treeSet.add("zhaoliu");
for (String s : treeSet) {
System.out.println(s);
}
}
}
实例二:
package com.demo.test;
@Setter
@Getter
@ToString
public class User {
private Integer id;
private String name;
private String password;
private float salary;
public User(){
}
public User(int id, String name, String password, float salary) {
this.id = id;
this.name = name;
this.password = password;
this.salary = salary;
}
}
package com.demo.test;
public interface MyPredicate<T> {
boolean check(T t);
}
package com.demo.test;
import java.util.ArrayList;
import java.util.List;
public class LambdaTest {
public static void main(String[] args) {
LambdaTest test = new LambdaTest();
test.test1();
test.test2();
}
/**
* 写法一:普通的实现方式
*/
public void test1() {
List<User> userList = this.createUserData();
List<User> resultList = this.filterUser(userList, new MyPredicate<User>() {
@Override
public boolean check(User user) {
return user.getSalary() > 1000f;
}
});
for (User user : resultList) {
System.out.println(user);
}
}
/**
* 写法二:lambda表达式实现方式
*/
public void test2() {
List<User> userList = this.createUserData();
List<User> resultList = this.filterUser(userList, (user) -> user.getSalary() > 1000f);
for (User user : resultList) {
System.out.println(user);
}
}
/**
*
* @param userList
* @param myPredicate
* @return
*/
public List<User> filterUser(List<User> userList, MyPredicate<User> myPredicate) {
List<User> resultList = new ArrayList<>();
for (User user : userList) {
if (myPredicate.check(user)) {
resultList.add(user);
}
}
return resultList;
}
/**
* 创建数据
* @return
*/
public List<User> createUserData() {
List<User> userList = new ArrayList<>();
userList.add(new User(1, "zhangsan", "admin", 999f));
userList.add(new User(2, "lisi", "admin", 899f));
userList.add(new User(3, "wangwu", "admin", 1999f));
userList.add(new User(4, "zhaoliu", "admin", 2999f));
userList.add(new User(5, "laoqi", "admin", 799f));
return userList;
}
}
版权声明:本文为shushan452原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。