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='蜀國'}