当前位置: 首页 > 教程 > Java8 >

Java8 Strram Filter方法

精华
小牛编辑
140浏览
2023-03-14

1 Java8 Strram Filter方法的介绍

Java8 Stream流式编程提供了一个方法filter() ,用于根据给定的predicate过滤流元素。假设您只希望获得列表中的偶数个元素,则可以借助filter方法轻松地做到这一点。

此方法以predicate为参数,并返回由结果元素组成的流。

2 Java8 Strram Filter方法的声明

Stream<T> filter(Predicate<? super T> predicate)  

参数:predicate:predicate是功能接口。因此,您也可以在此处传递lambda表达式。

返回值:返回一个新的流。

3 Java8 Strram Filter方法的案例1

在以下示例中,我们将获取并迭代过滤后的数据。

/**
 * 小牛知识库网: https://www.xnip.cn
 */
import java.util.*;  
class Product{  
    int id;  
    String name;  
    float price;  
    public Product(int id, String name, float price) {  
        this.id = id;  
        this.name = name;  
        this.price = price;  
    }  
}  
public class JavaStreamExample {  
    public static void main(String[] args) {  
        List<Product> productsList = new ArrayList<Product>();  
        //Adding Products  
        productsList.add(new Product(1,"HP Laptop",25000f));  
        productsList.add(new Product(2,"Dell Laptop",30000f));  
        productsList.add(new Product(3,"Lenevo Laptop",28000f));  
        productsList.add(new Product(4,"Sony Laptop",28000f));  
        productsList.add(new Product(5,"Apple Laptop",90000f));  
        productsList.stream()  
                    .filter(p ->p.price> 30000)   // filtering price  
                    .map(pm ->pm.price)          // fetching price  
                    .forEach(System.out::println);  // iterating price  
    }  
}  

输出结果为:

90000.0

4 Java8 Strram Filter方法的案例2

在下面的示例中,我们将过滤后的数据作为列表来获取。

/**
 * 小牛知识库网: https://www.xnip.cn
 */
import java.util.*;  
import java.util.stream.Collectors;  
class Product{  
    int id;  
    String name;  
    float price;  
    public Product(int id, String name, float price) {  
        this.id = id;  
        this.name = name;  
        this.price = price;  
    }  
}  
public class JavaStreamExample {  
    public static void main(String[] args) {  
        List<Product> productsList = new ArrayList<Product>();  
        //Adding Products  
        productsList.add(new Product(1,"HP Laptop",25000f));  
        productsList.add(new Product(2,"Dell Laptop",30000f));  
        productsList.add(new Product(3,"Lenevo Laptop",28000f));  
        productsList.add(new Product(4,"Sony Laptop",28000f));  
        productsList.add(new Product(5,"Apple Laptop",90000f));  
        List<Float> pricesList =  productsList.stream()  
                    .filter(p ->p.price> 30000)   // filtering price  
                    .map(pm ->pm.price)          // fetching price  
                    .collect(Collectors.toList());  
        System.out.println(pricesList);  
    }  
} 

输出结果为:

[90000.0]