当前位置: 首页 > news >正文

江门网站建设方案推广农产品品牌推广方案

江门网站建设方案推广,农产品品牌推广方案,怎么用 java做网站,湘潭网站建设 在线磐石网络Java8实战-总结18 使用流筛选和切片用谓词筛选筛选各异的元素截短流跳过元素 使用流 流让你从外部迭代转向内部迭代。这样&#xff0c;就用不着写下面这样的代码来显式地管理数据集合的迭代(外部迭代)了&#xff1a; List<Dish> vegetarianDishes new ArrayList<>…

Java8实战-总结18

  • 使用流
    • 筛选和切片
      • 用谓词筛选
      • 筛选各异的元素
      • 截短流
      • 跳过元素

使用流

流让你从外部迭代转向内部迭代。这样,就用不着写下面这样的代码来显式地管理数据集合的迭代(外部迭代)了:

	List<Dish> vegetarianDishes = new ArrayList<>();for(Dish d : menu) {if(d.isVegetarian()) {vegetarianDishes.add(d);}}

可以使用支持filtercollect操作的Stream API(内部迭代)管理对集合数据的迭代。只需要将筛选行为作为参数传递给filter方法就行了。

	import static java.util.stream.Collectors.toList;List<Dish> vegetarianDishes =menu.stream().filter(Dish::isVegetarian).collect(toList());

这种处理数据的方式很有用,因为你让Stream API管理如何处理数据。这样Stream API就可以在背后进行多种优化。此外,使用内部迭代的话,Stream API可以决定并行运行你的代码。这要是用外部迭代的话就办不到了,因为你只能用单一线程挨个迭代。

下面会介绍Stream API支持的许多操作。这些操作能让你快速完成复杂的数据查询,如筛选、切片、映射、查找、匹配和归约。接下来,会看看一些特殊的流:数值流、来自文件和数组等多种来源的流,最后是无限流。

筛选和切片

来看看如何选择流中的元素:用谓词筛选,筛选出各不相同的元素,忽略流中的头几个元素,或将流截短至指定长度。

用谓词筛选

Streams接口支持filter方法。该操作会接受一个谓词(一个返回boolean的函数)作为参数,并返回一个包括所有符合谓词的元素的流。例如,可以像下图所示的这样,筛选出所有素菜,创建一张素食菜单:

List<Dish> vegetarianMenu = menu.stream().filter(Dish::isVegetarian)//方法引用检查菜肴是否适合素食者.collect(toList());

在这里插入图片描述

筛选各异的元素

流还支持一个叫作distinct的方法,它会返回一个元素各异(根据流所生成元素的hashCodeequals方法实现)的流。例如,以下代码会筛选出列表中所有的偶数,并确保没有重复。

List<Integer> numbers = Arrays.asList(1, 2, 1, 3, 3, 2, 4);
numbers.stream().filter(i -> i % 2 == 0).distinct().forEach(System.out::println);

在这里插入图片描述

截短流

流支持limit(n)方法,该方法会返回一个不超过给定长度的流。所需的长度作为参数传递给limit。如果流是有序的,则最多会返回前n个元素。比如,你可以建立一个List,选出热量超过300卡路里的头三道菜:

List<Dish> dishes = menu.stream().filter(d -> d.getCalories() > 300).limit(3).collect(toList());

下图展示了filterlimit的组合。可以看到,该方法只选出了符合谓词的头三个元素,然后就立即返回了结果。
请注意limit也可以用在无序流上,比如源是一个set。这种情况下,limit的结果不会以任何顺序排列。
在这里插入图片描述

跳过元素

流还支持skip(n)方法,返回一个扔掉了前n个元素的流。如果流中元素不足n个,则返回一个空流。请注意,limit(n)和skip(n)是互补的!例如,下面的代码将跳过超过300卡路里的头两道菜,并返回剩下的。图5-4展示了这个查询。

List<Dish> dishes = menu.stream().filter(d -> d.getcalories()> 300).skip(2).collect(toList ());

在这里插入图片描述

测验:筛选你将如何利用流来筛选前两个荤菜呢?
答案:可以把filter和limit复合在一起来解决这个问题,并用collect(toList())将流转换成一个列表。
List<Dish> dishes =menu.stream().filter(d -> d.getType()== Dish.Type.MEAT).limit(2).collect(toList();
http://www.ritt.cn/news/24000.html

相关文章:

  • 1m带宽网站支持多少人同时在线十大放黄不登录不收费
  • 平面设计正规兼职平台整站优化和关键词优化的区别
  • 怎么做网站计划快速排名优化推广价格
  • 中小公司做网站今日新闻最新头条
  • 网站开发文档模板 开源全国疫情最新消息
  • 品牌建设+网站互联网登录的网站名
  • 专门做机器人大战的网站叫什么怎么制作网页链接
  • 学习日常之完成网站建设作业北京搜索引擎优化经理
  • 影视网站搭建哪个系统好网络广告的计费方式
  • 苏州营销网站建设本周国内重大新闻十条
  • 做珠宝的网站上海网络推广公司网站
  • 怎么看网站是动态还是静态产品质量推广营销语
  • 深圳建站公司招聘最新新闻头条
  • 做网站全部乱码怎么办seo优化工具
  • 网站源码对应的数据库怎么做海南seo顾问服务
  • 网站开发汇报ppt模板seo客服
  • 360免费wifi不能上网河南做网站优化
  • 有了网站 域名然后么做城市更新论坛破圈
  • 有趣的网站初音站长检测工具
  • 网站设计是怎么做的全网营销推广案例
  • 学院网站建设规划英雄联盟韩国
  • 前端作业做一个网站网推怎么做
  • 做网站 英语徐州百度推广总代理
  • 没有备案的网站seo的定义是什么
  • 大连网站设计开发怎么做个人网页
  • 专业网站优化推广成都网站建设软件
  • 合肥市有做网站的公司吗企业网络营销青岛
  • 广州低价网站建设淘宝店铺怎么引流推广
  • 北京康迪建设监理咨询有限公司网站6自动收录
  • 汕头企业网站公司怎么样做推广最有效