0
点赞
收藏
分享

微信扫一扫

Java中stream().filter用法示例

楠蛮鬼影 2022-04-06 阅读 53
java

1 简介

  • 在Java8 API中增添了新的抽象类Stream,将待处理的元素集和视作一种流,并在管道中传输,且可在管道的节点上进行多种处理,比如排序、筛选、聚合等。

  • 因此,在Java8及以上版本中,可利用stream().filter来筛选出理想的结果,也即根据条件来查找对象集和。

2 代码示例

下面为一个简单的示例:新建了一个类Fruit,包含两个成员变量price和name;使用List来存储Fruit类型的变量,然后由stream().filter来筛选符号条件的集和。

import java.io.*;
import java.util.*;
import java.util.stream.Collectors;

public class stream_filter {
    public static void main(String[] args) throws IOException{
        
        List<Fruit> fruits = new ArrayList<Fruit>();
        fruits.add(new Fruit("Apple", 9.9));
        fruits.add(new Fruit("Orange", 12.5));
        fruits.add(new Fruit("Banana", 15.9));

        //展示原始的水果列表
        System.out.println(">>>>>> Before filter: ");
        for(Fruit r : fruits){
            System.out.println("Name: " + r.name + ", Price: " + r.price);
        }
       
        //filter-1: 筛选出水果价格大于10.0的
        List<Fruit> res1 = fruits.stream().filter(f -> f.getPrice() > 10.0).collect(Collectors.toList());
        System.out.println(">>>>>> After filter-1: ");
        for( Fruit r : res1){
            System.out.println("Name: " + r.name + ", Price: " + r.price);
        }

        //filter-2: 筛选出水果名称为"Apple"的
        List<Fruit> res2 = fruits.stream().filter(f -> "Apple".equals(f.getName())).collect(Collectors.toList());
        System.out.println(">>>>>> After filter-2: ");
        for( Fruit r : res2){
            System.out.println("Name: " + r.name + ", Price: " + r.price);
        }
    }

    public static class Fruit{
        String name;
        double price;

        public Fruit(String name, double price) {
            this.name = name;
            this.price = price;
        }

        public void setName(String name) {
            this.name = name;
        }
        public String getName() {
            return this.name;
        }
        
        public void setPrice(double price) {
            this.price = price;
        }
        public  double getPrice() {
            return this.price;
        }
    }
}


3 输出结果

输出结果为:

在这里插入图片描述

举报

相关推荐

0 条评论