java8使用流的filter来筛选数据的实现

 更新时间:2021年03月19日 08:36:32   作者:程序员与王子喵  
这篇文章主要介绍了java8使用流的filter来筛选数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

本文主要介绍了java8使用流的filter来筛选数据的实现,分享给大家,具体如下:

package chapter1;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import static java.util.stream.Collectors.groupingBy;

public class stream {
  //比如说 你需要在一个列表中 筛选出所以重量大于150的苹果,然后按照颜色分组
  //按常规的筛选写法 就是在循环里面 迭代筛选

  public static void main(String[] args) {
    List<Apple> appleList = new ArrayList<>();

    //常规写法
    Map<String, List<Apple>> AppMap = new HashMap<>();
    for (Apple apple : appleList) {
      if (apple.getWeight() > 150) { //如果重量大于150
        if (AppMap.get(apple.getColor()) == null) { //该颜色还没分类
          List<Apple> list = new ArrayList<>(); //新建该颜色的列表
          list.add(apple);//将苹果放进去列表
          AppMap.put(apple.getColor(),list);//将列表放到map中
        }else { //该颜色分类已存在
          AppMap.get(apple.getColor()).add(apple);//该颜色分类已存在,则直接放进去即可
        }
      }
    }

    //如上方式 就可以筛选出来所有的150克大小以上的苹果,并按颜色分类



    //方式二 使用java8提供的流api实现 这种叫内部迭代
    Map<String, List<Apple>> AppMap2=appleList.stream().filter((Apple a)->a.getWeight()>150) //筛选出大于150的
        .collect(groupingBy(Apple::getColor)); //按颜色分组 最后得到map
    

  }


  class Apple {

    private String color;//颜色
    private Integer weight; //重量

    public String getColor() {
      return color;
    }

    public void setColor(String color) {
      this.color = color;
    }

    public Integer getWeight() {
      return weight;
    }

    public void setWeight(Integer weight) {
      this.weight = weight;
    }
  }
}

到此这篇关于java8使用流的filter来筛选数据的实现的文章就介绍到这了,更多相关java8 filter筛选数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中的CopyOnWriteArrayList解析

    Java中的CopyOnWriteArrayList解析

    这篇文章主要介绍了Java中的CopyOnWriteArrayList解析,ArrayList是非线程安全的,也就是说在多个线程下进行读写,会出现异常,既然是非线程安全,那我们就使用一些机制把它变安全不就好了,需要的朋友可以参考下
    2023-12-12
  • 基于Springboot实现定时发送邮件功能

    基于Springboot实现定时发送邮件功能

    这篇文章主要为大家详细介绍了基于Springboot实现定时发送邮件功能的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • SpringBoot应用部署到Tomcat中无法启动的解决方法

    SpringBoot应用部署到Tomcat中无法启动的解决方法

    这篇文章主要介绍了SpringBoot应用部署到Tomcat中无法启动的解决方法,需要的朋友可以参考下
    2017-09-09
  • Java中的maven和gradle的比较与使用详解

    Java中的maven和gradle的比较与使用详解

    这篇文章主要介绍了maven和gradle的比较与使用,Maven使用基于XML的配置,Gradle采用了领域特定语言Groovy的配置,在Maven中要引入一个依赖,需要的朋友可以参考下
    2022-04-04
  • springboot配置mysql数据库spring.datasource.url报错的解决

    springboot配置mysql数据库spring.datasource.url报错的解决

    这篇文章主要介绍了springboot配置mysql数据库spring.datasource.url报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • 基于SpringBoot实现定时发送邮件过程解析

    基于SpringBoot实现定时发送邮件过程解析

    这篇文章主要介绍了基于SpringBoot实现定时发送邮件过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Mybatis核心配置文件加载流程详解

    Mybatis核心配置文件加载流程详解

    本文将介绍MyBatis在配置文件加载的过程中,如何加载核心配置文件、如何解析映射文件中的SQL语句以及每条SQL语句如何与映射接口的方法进行关联,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • Java从入门到起飞之数组使用详解

    Java从入门到起飞之数组使用详解

    这篇文章主要介绍了Java从入门到起飞之数组使用的相关资料,包括数组的声明、初始化、长度、索引、遍历和默认值等内容,还介绍了Arrays工具类中常用的方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-03-03
  • java微信开发第二步 获取消息和回复消息

    java微信开发第二步 获取消息和回复消息

    这篇文章主要为大家分享java微信开发的第二步,如何获取消息和回复消息,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • java使用CollectionUtils工具类判断集合是否为空方式

    java使用CollectionUtils工具类判断集合是否为空方式

    这篇文章主要介绍了java使用CollectionUtils工具类判断集合是否为空方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02

最新评论