开发手册 欢迎您!
软件开发者资料库

Java Stream filter()过滤List数据的方法及示例代码

本文主要介绍Java中,使用Stream filter()、collect(),、findAny() 和 orElse(),对List数据进行过滤和筛选的方法及示例代码。

1、使用 filter() 和 collect()过滤筛选List数据

package com.wonhero.java8;import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;public class StreamJava8 {    public static void main(String[] args) {        List lines = Arrays.asList("c","java", "python", "wonhero");        List result = lines.stream()                //将list 转成 stream                .filter(line -> !"wonhero".equals(line))     // 过滤掉wonhero                .collect(Collectors.toList());              // 收集输出并将流转换为列表        result.forEach(System.out::println);                //输出 :c, javapy,python    }}

2、使用 filter() findAny()和 orElse()过滤筛选List数据

1) 单个筛选条件

package com.wonhero.java8;import java.util.Arrays;import java.util.List;public class wonheroJava8 {    public static void main(String[] args) {        List persons = Arrays.asList(                new Person("wonhero", 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.wonhero.java8;import java.util.Arrays;import java.util.List;public class wonheroJava8 {    public static void main(String[] args) {        List persons = Arrays.asList(                new Person("wonhero", 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.wonhero.java8;import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;public class wonheroJava8 {    public static void main(String[] args) {        List persons = Arrays.asList(                new Person("javapy", 18),                new Person("wonhero", 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 collect = persons.stream()                .map(Person::getName)                .collect(Collectors.toList());        collect.forEach(System.out::println);    }}

相关文档:

Java 使用Stream()过滤(filter())筛选List T 列表数据并记录过滤的值日志方法代码

Java 使用Stream()将Map String, List String 数据求和(sum)方法代码

Java Stream使用多个过滤器(filter())或复杂条件方法用法及简单写法代码