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 列表数据并记录过滤的值日志方法代码