本文介绍: Optional.ofNullable(T t):若 t 不为 null,创建 Optional 实例,否则创建空实例。Lambda 表达式新的语法元素和操作符。这个操作符为 “->” ,被称 为 Lambda 操作符或剪头操作符。右侧:指定了 Lambda 体,即 Lambda 表达式要执行 的功能。orElse(T t) : 如果调用对象包含值,返回该值,否则返回t。map():映射,可以用lambda表达式获取里面对象的值。可以通过 Lambda 表达式来创建该接口的对象。
一:Lambda 表达式
Lambda 表达式新的语法元素和操作符。这个操作符为 “->” ,被称 为 Lambda 操作符或剪头操作符。
左侧:指定了 Lambda 表达式需要的所有参数
右侧:指定了 Lambda 体,即 Lambda 表达式要执行 的功能。
Runnable runnable=new Runnable() {
@Override
public void run() {
System.out.println("hello");
}
};
//等效于上面
Runnable runnable= () -> System.out.println("hello");
二:函数式接口
只包含一个抽象方法的接口,称为函数式接口。
可以通过 Lambda 表达式来创建该接口的对象。
三:Stream流
List<Long> idList = users.stream().map(User::getId).collect(Collectors.toList());
两个参数:
List<User> userList = new ArrayList<>();
userList.add(new User(1, "张三", 18));
userList.add(new User(2, "李四", 19));
userList.add(new User(3, "王五", 18));
//将userList转化为key为id,value为User对象的map
Map<Long, User> map = userList.stream().collect(Collectors.toMap(User::getId, p -> p));
两个参数结果:
{
1: User(1, "张三", 18)
2: User(2, "李四", 19)
3: User(3, "王五", 18)
}
三个参数:(a, b) -> b的意思就是,如果存在重复的,永远取后面一个
Map<Integer, String> map = userList.stream().collect(Collectors.toMap(User::getAge, User::getName, (a, b) -> b));
三个参数结果:
{
18: "王五"
19: "李四"
}
Map<Integer, List<User>> map = userList.stream().collect(Collectors.groupingBy(User::getAge));
结果:
{
18: [User(1, "张三", 18), User(3, "王五", 18)]
19: [User(2, "李四", 19)]
}
四:Optional 类
isPresent() : 判断是否有值
get():返回里面的对象
Optional.ofNullable(T t):若 t 不为 null,创建 Optional 实例,否则创建空实例
map():映射,可以用lambda表达式获取里面对象的值
orElse(T t) : 如果调用对象包含值,返回该值,否则返回t
public String getName(User user){
Optional<User> u = Optional.ofNullable(user);
if(!u.isPresent()){
return "Unknown";
}else return u.get().name();
}
简化:
public String getName(User user){
return Optional.ofNullable(user).map(u -> u.name).orElse("Unknown");
}
原文地址:https://blog.csdn.net/qq_43185254/article/details/134735620
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_27810.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。