本文介绍: Optional.ofNullable(T t):若 t 不为 null,创建 Optional 实例,否则创建实例。Lambda 表达式新的语法元素操作符。这个操作符为 “->” ,被称 为 Lambda 操作符或剪头操作符。右侧:指定了 Lambda 体,即 Lambda 表达式执行功能orElse(T t) : 如果调用对象包含值,返回该值,否则返回tmap():映射可以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流

1.Collectors.toList()

List<Long&gt; idList = users.stream().map(User::getId).collect(Collectors.toList());

2.Collectors.toMap()

两个参数:
List<User&gt; userList = new ArrayList<>();
userList.add(new User(1, "张三", 18));
userList.add(new User(2, "李四", 19));
userList.add(new User(3, "王五", 18));
//将userList转化为keyidvalue为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: "李四"
}

3.Collectors.groupingBy()

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进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注