Java Lambda filter foreach的简单使用
Java Lambda filter foreach的简单使用
Java在对 List 集合进行按条件查询的时候,经常会想到使用for循环。
自从 Java 8 引入了 Lambda 后,简化了循环的使用。
举例说明 Lambda的 foreach 和 filter 的简单使用。
1、自定义类 Hero
/** * Created by Miracle Luna on 2020/3/8 */ public class Hero { private String name; private String country; public Hero(String name, String country) { this.name = name; this.country = country; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } @Override public String toString() { return "Hero{" + "name='" + name + '\'' + ", country='" + country + '\'' + '}'; } }
2、foreach循环
import java.util.ArrayList; import java.util.List; /** * Created by Miracle Luna on 2020/3/8 */ public class LambdaForeachDemo { public static void main(String[] args) { List<Hero> heroList = new ArrayList<>(); List<Hero> resultList = new ArrayList<>(); Hero liubei = new Hero("刘备", "蜀国"); Hero guanyu = new Hero("关羽", "蜀国"); Hero zhangfei = new Hero("张飞", "蜀国"); Hero sunce = new Hero("孙策", "吴国"); heroList.add(liubei); heroList.add(guanyu); heroList.add(zhangfei); heroList.add(sunce); // 查询不是吴国的英雄 heroList.forEach(hero -> { if(!"吴国".equals(hero.getCountry())) { resultList.add(hero); } }); // 打印结果集合 resultList.forEach(hero -> System.out.println(hero.toString())); } }
3、filter过滤
import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * Created by Miracle Luna on 2020/3/8 */ public class LambdaFilterDemo { public static void main(String[] args) { List<Hero> heroList = new ArrayList<>(); List<Hero> resultList = new ArrayList<>(); Hero liubei = new Hero("刘备", "蜀国"); Hero guanyu = new Hero("关羽", "蜀国"); Hero zhangfei = new Hero("张飞", "蜀国"); Hero sunce = new Hero("孙策", "吴国"); heroList.add(liubei); heroList.add(guanyu); heroList.add(zhangfei); heroList.add(sunce); // 查询不是吴国的英雄 resultList = heroList.stream() .filter(hero -> !"吴国".equals(hero.getCountry())) .collect(Collectors.toList()); // 打印结果集合 resultList.forEach(hero -> System.out.println(hero.toString())); } }
4、运行结果如下:
Hero{name='刘备', country='蜀国'} Hero{name='关羽', country='蜀国'} Hero{name='张飞', country='蜀国'}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)