Java在对 List 集合进行按条件查询的时候,经常会想到使用for循环。
自从 Java 8 引入了 Lambda 后,简化了循环的使用。
举例说明 Lambda的 foreach 和 filter 的简单使用。
/** * 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 + ‘\‘‘ + ‘}‘; } }
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())); } }
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())); } }
Hero{name=‘刘备‘, country=‘蜀国‘} Hero{name=‘关羽‘, country=‘蜀国‘} Hero{name=‘张飞‘, country=‘蜀国‘}
Java Lambda filter foreach的简单使用
原文:https://www.cnblogs.com/miracle-luna/p/12445627.html