Java语法糖写法

一、函数式接口

1、Function函数式接口:有一个输入参数,有一个输出

2、断定型接口:有一个输入参数,返回值只能是布尔值!

3、Consumer 消费型接口:只有输入,没有返回值

4、Supplier供给型接口:没有参数,只有返回值

二、常用的Lambda写法

1、如果model不为空,获取他的data属性,否则返回null

java 复制代码
Optional.ofNullable(model).map(Record::getData).orElse(null);

2、遍历list,获取每一个对象的name属性,转化为list返回

java 复制代码
.stream().map(Type::name).collect(Collectors.toList());

3、2的并行处理

java 复制代码
.parallelStream().filter(Objects::nonNull).map(Model::getName()).collect(Collectors.toList());

4、guava创建集合

java 复制代码
Lists.newArrayList()
Maps.newHashMap();

5、遍历apps,获取每个元素的hex属性,mapToLong转化为LongStream,最后求和,intValue向下转型为int

java 复制代码
Long.valueOf(apps.stream().mapToLong(Type::getHex).sum()).intValue();

6、list不为空,转化为userId list,并且去重

java 复制代码
Optional.ofNullable(repayProps).orElse(Lists.newArrayList()).stream().map(FlowProps::getUserId).distinct().collect(Collectors.toList());

7、list中获取第一个元素findFirst

java 复制代码
.stream().filter(s -> s.getType() == fileType).findFirst().orElse(null);

8、把各个元素相加得出一个结果

java 复制代码
.stream().reduce(BigDecimalHelper::addWithNullAsZeroAndScale).orElse(BigDecimal.ZERO)
.stream().reduce(BigDecimal.ZERO, BigDecimal::add);

9、求最小值

java 复制代码
.stream().min(Comparator.comparing(Record::getIndex));

10、分组

java 复制代码
.stream().collect(Collectors.groupingBy(vo -> vo.getType().name() + vo.getDate()));

11、是否有任意一个符合

java 复制代码
Collection<String> prefixList
String userChannel
prefixList.stream().anyMatch(userChannel::startsWith);

12、抛异常

java 复制代码
.stream().findFirst().orElseThrow(() -> new IllegalArgumentException("no available"))

13、排序

java 复制代码
.stream().sorted(Comparator.comparingInt(VO::getTerms)).collect(Collectors.toList());

14、逆序

java 复制代码
.stream().sorted(Comparator.comparingInt(VO::getIndex).reversed()).collect(Collectors.toList());

15、转为map

java 复制代码
.stream().collect(Collectors.toMap(Record::getId, v -> v));

16、flatMap返回Stream,还可以继续.

java 复制代码
.stream().flatMap(Collection::stream).filter(Objects::nonNull).collect(Collectors.toList());

17、遍历

java 复制代码
.stream().forEach(x -> x.setCode(code));

18、计数

java 复制代码
.stream().count();

19、逗号分隔

java 复制代码
.collect(Collectors.joining(","));

20、去重

java 复制代码
.distinct()

21、获取任意一个,类似findFirst

java 复制代码
.stream().findAny().get().getOrderId();

22、如果当前值存在,传入一个Consumer

java 复制代码
.ifPresent(info -> {System.out.println(info)});

23、如果存在值则返回true,否则返回false

java 复制代码
.isPresent()

24、转为set

java 复制代码
.collect(Collectors.toSet());
相关推荐
噢,我明白了1 小时前
JAVA中的一些基础应用知识点
java·开发语言
SL_staff2 小时前
私有化低代码不是妥协,而是企业级数字化的自主可控主航道
java
装不满的克莱因瓶2 小时前
【SpringAI Alibaba】ReactAgent结构化输出OutputType与OutputSchema实战
java·人工智能·ai·springai·springaialibaba
秋天的怀念_David2 小时前
算法一千零一夜 · 第二十八夜 注册
java·程序人生·算法
Java码农也是农2 小时前
Spring 事务详解:@Transactional 如何生效、何时回滚、传播行为怎么选
java·spring boot·spring·事务
学长毕设3 小时前
基于SpringBoot的游乐园管理系统-附源码
java·spring boot·后端
SimonKing4 小时前
震惊:怎么回事,opencode一轮对话耗尽免费额度
java·后端·程序员
装不满的克莱因瓶4 小时前
【SpringAI Alibaba】ReactAgent响应SSE实时流式传输案例实战
java·人工智能·ai·sse·springai
杨凯凡4 小时前
Spring Boot 文件上传怎么做才安全?流式落盘、路径校验与数据库一致性实战
java·spring boot·文件上传·后端安全·数据库一致性
这个昵称不容易4 小时前
旅游管理系统的设计与实现(SpringBoot + MySQL + Vue 前后端分离)
java·springboot·毕设