什么是Lambda
-
Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性;
-
Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中);
-
使用 Lambda 表达式可以使代码变的更加简洁紧凑。
Lambda基本语法:
(parameters) -> expression
或
(parameters) ->{ statements; }
常见使用场景:
-
新建User实体类
public class User {
private String userId;
private Integer age;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"userId='" + userId + '\'' +
", age=" + age +
'}';
}
}
//新建一个用户集合
List<User> userList = new ArrayList<>();
//遍历插入10个user对象
for (int i = 0; i <= 10; i++) {
User user = new User();
user.setUserId(String.valueOf(i));
user.setAge(i);
userList.add(user);
}
//遍历输出age
userList.forEach(user -> System.out.print("age:" + user.getAge()+" "));
//获取userId的集合
//传统方式
List<String> oldMethod = new ArrayList<>();
for (User user : userList) {
oldMethod.add(user.getUserId());
}
//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
System.out.println(oldMethod);
//使用lambda结合stream
//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
List<String> newMethod = userList.stream().map(user -> user.getUserId()).collect(Collectors.toList());
System.out.println(newMethod);
//取出userId大于5的集合
List<String> list = newMethod.stream().filter(x -> Integer.valueOf(x) > 5).collect(Collectors.toList());
//[6, 7, 8, 9, 10]
System.out.println(list);
//按升序排序获取age的前两位
List<User> userSortList = userList
.stream()
.sorted(Comparator.comparing(User::getAge))
.limit(2)
.collect(Collectors.toList());
//[User{userId='0', age=0}, User{userId='1', age=1}]
System.out.println(userSortList.toString());
//按降序排序获取age的前两位
List<User> userSortList2 = userList
.stream()
.sorted(Comparator.comparing(User::getAge).reversed())
.limit(2)
.collect(Collectors.toList());
//[User{userId='10', age=10}, User{userId='9', age=9}]
System.out.println(userSortList2.toString());
小小总结
正如你所看到的,熟练使用Lambda表达式后,这不仅让代码变的简单、而且可读,最重要的是代码量也随之减少很多,代码也更加优雅了。
网友评论