1、使用 filter() 和 collect()过滤筛选List数据
package com.cjavapy.java8; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class StreamJava8 { public static void main(String[] args) { List<String> lines = Arrays.asList("c","java", "python", "cjavapy"); List<String> result = lines.stream() //将list 转成 stream .filter(line -> !"cjavapy".equals(line)) // 过滤掉cjavapy .collect(Collectors.toList()); // 收集输出并将流转换为列表 result.forEach(System.out::println); //输出 :c, javapy,python } }
2、使用 filter() findAny()和 orElse()过滤筛选List数据
1) 单个筛选条件
package com.cjavapy.java8; import java.util.Arrays; import java.util.List; public class cjavapyJava8 { public static void main(String[] args) { List<Person> persons = Arrays.asList( new Person("cjavapy", 11), new Person("jack", 20), new Person("levi", 40) ); Person result1 = persons.stream() // 转换成 steam .filter(x -> "jack".equals(x.getName())) // 筛选出jack .findAny() // 如果'findAny' 找到则返回数据 .orElse(null); //如果没找到, 则返回null System.out.println(result1); } }
2) 多个筛选条件
package com.cjavapy.java8; import java.util.Arrays; import java.util.List; public class cjavapyJava8 { public static void main(String[] args) { List<Person> persons = Arrays.asList( new Person("cjavapy", 30), new Person("jack", 20), new Person("jack", 30), new Person("levi", 40) ); Person result1 = persons.stream() .filter((p) -> "jack".equals(p.getName()) && 20 == p.getAge()) .findAny() .orElse(null); System.out.println("result 1 :" + result1); //或者 Person result2 = persons.stream() .filter(p -> { if ("jack".equals(p.getName()) && 20 == p.getAge()) { return true; } return false; }).findAny() .orElse(null); System.out.println("result 2 :" + result2); } }
3、使用filter() 和 map()过滤筛选List数据
package com.cjavapy.java8; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class cjavapyJava8 { public static void main(String[] args) { List<Person> persons = Arrays.asList( new Person("javapy", 18), new Person("cjavapy", 30), new Person("jack", 25), new Person("levi", 31) ); String name = persons.stream() .filter(x -> "jack".equals(x.getName())) .map(Person::getName) //将 stream 转成 String .findAny() .orElse(""); System.out.println("name : " + name); List<String> collect = persons.stream() .map(Person::getName) .collect(Collectors.toList()); collect.forEach(System.out::println); } }
相关文档:
Java 使用Stream()过滤(filter())筛选List T 列表数据并记录过滤的值日志方法代码