java调用filter,map方法

java的集合类,没有直接实现filter,map这些函数式方法,要调用这些方法,可以使用 Java8 的 Stream API

详细使用可参考: Java8中Stream详细用法大全 

Java8 的 Stream API 的坑

1. 没有直接的 findObj 方法

findFirst 和 findAny 都不支持传入条件

要从list中查找一个对象,只能通过filter得到一个list,再通过 findFirst 获取,最后再通过 get 才能拿到原始类型的对象

User u = list.stream().filter(t -> t.getId() == id).findFirst().get()

而且 findFirst 还有坑,返回的 Optional<T> 类型为 null 时候,不能get,要判断一下

解决方法有如下几种:

复制代码
//使用orElse(null)
User u = list.stream().filter(t -> t.getId() == id).findFirst().orElse(null)

//使用 isPresent 判断
Optional<User> u = list.stream().filter(t -> t.getId() == id).findFirst().orElse(null)
return u.isPresent() ? u.get() : null;

//使用 ifPresent(e -> xxx)
list.stream().filter(t -> t.getId() == id).findFirst().orElse(null).ifPresent(e -> System.out.println(e))
复制代码

2. 将数组转换为流的方式

  • Stream.of(数组名)
  • Arrays.stream(数组名)
posted @   全玉  阅读(105)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示