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

建设银行网银网站激活/百度小说排行榜2020

建设银行网银网站激活,百度小说排行榜2020,新疆哪里做网站,郑州做网站kuihuakejiStream介绍Stream(流)是一个来自数据源的元素队列,元素是特定类型的对象,形成一个队列。 Java中的Stream并不会存储元素,而是按需计算。数据源:流的来源,可以是集合,数组 等。和以前…

Stream介绍

Stream(流)是一个来自数据源的元素队列,元素是特定类型的对象,形成一个队列。 Java中的Stream并不会存储元素,而是按需计算。数据源:流的来源,可以是集合,数组 等。

和以前的Collection操作不同, Stream操作还有两个基础的特征:

Pipelining: 中间操作都会返回流对象本身。 这样多个操作可以串联成一个管道, 如同流式风格(fluentstyle)。 这样做可以对操作进行优化, 比如延迟执行(laziness)和短路( short-circuiting)。

内部迭代: 以前对集合遍历都是通过Iterator或者增强for的方式, 显式的在集合外部进行迭代, 这叫做外部迭代。 Stream提供了内部迭代的方式,流可以直接调用遍历方法。

b52a86caac2a524244e2f620d57b87bc.png

这张图中展示了过滤、映射、跳过、计数等多步操作,这是一种集合元素的处理方案,而方案就是一种“函数模型”。图中的每一个方框都是一个“流”,调用指定的方法,可以从一个流模型转换为另一个流模型。而最右侧的数字3是最终结果。这里的 filter 、 map 、 skip 都是在对函数模型进行操作,集合元素并没有真正被处理。只有当终结方法 count执行的时候,整个模型才会按照指定策略执行操作。而这得益于Lambda的延迟执行特性。

备注:“Stream流”其实是一个集合元素的函数模型,它并不是集合,也不是数据结构,其本身并不存储任何元素(或其地址值)。

当使用一个流的时候,通常包括三个基本步骤:

获取一个数据源(source)→ 数据转换→执行操作获取想要的结果,每次转换原有 Stream 对象不改变,返回一个新的 Stream 对象(可以有多次转换),这就允许对其操作可以像链条一样排列,变成一个管道。

Stream操作

1、获取流:

java.util.stream.Stream<T> 是Java 8新加入的最常用的流接口。(这并不是一个函数式接口。)获取一个流非常简单,有以下几种常用的方式:所有的 Collection 集合都可以通过 stream 默认方法获取流;Stream 接口的静态方法 of 可以获取数组对应的流。

1.1、根据Collection获取流

java.util.Collection 接口中加入了default方法 stream 用来获取流,所以其所有实现类均可获取流。java.util.Collection 接口中加入了default方法 stream 用来获取流,所以其所有实现类均可获取流。

List

1.2、根据Map获取流

java.util.Map 接口不是 Collection 的子接口,且其K-V数据结构不符合流元素的单一特征,所以获取对应的流需要分key、value或entry等情况:

Stream

1.3、据数组获取流

如果使用的不是集合或映射而是数组,由于数组对象不可能添加默认方法,所以 Stream 接口中提供了静态方法of 。

String

2、Stream中的常用方法

dc8476647da2422908a58fad98f66b23.png

2.1、forEach:逐一处理

void 

该方法接收一个 Consumer 接口函数,会将每一个流元素交给该函数进行处理。

private 

输出:

forEach ==================
张无忌
张翠山
张三丰
张一元

2.2、filter:过滤

Stream

该接口接收一个 Predicate 函数式接口参数(可以是一个Lambda或方法引用)作为筛选条件。

private 

输出:

filter ==================
张无忌
张三丰

2.3、map: 映射

如果需要将流中的元素映射到另一个流中,可以使用 map 方法。

<

该接口需要一个 Function 函数式接口参数,可以将当前流中的T类型数据转换为另一种R类型的流。

private 

输出:

map ==================
10
12
18

2.4、count:统计流中的元素个数

正如旧集合 Collection 当中的 size 方法一样,流提供 count 方法来数一数其中的元素个数:

long 

该方法返回一个long值代表元素个数(不再像旧集合那样是int值)。

private 

输出:

count ==================
4

2.5、limit:取用前几个

limit 方法可以对流进行截取,只取用前n个。

Stream

参数是一个long型,如果集合当前长度大于参数则进行截取;否则不进行操作。

private 

输出:

limit ==================
张无忌
张翠山
张三丰

2.6、skip:跳过前几个

如果希望跳过前几个元素,可以使用 skip 方法获取一个截取之后的新流:

Stream
如果流的当前长度大于n,则跳过前n个;否则将会得到一个长度为0的空流。
n必须大于等于0,如果大于当前流中的元素个数,则产生一个空流。
private 

输出:

skip ==================
张三丰
张一元

2.7、concat:组合

如果有两个流,希望合并成为一个流,那么可以使用 Stream 接口的静态方法 concat :

static 

例子:

private 

输出:

concat ==================
张三
李四

2.8、sorted:排序

Stream

sorted 方法用于对流进行排序。

private 

输出:

sorted ==================
张三丰
张无忌
张翠山

2.9、元素收集

1)收集到List集合:

流对象

获得List集合。

2)收集到Set集合:

流对象

获得Set集合。

3)收集到数组:

流对象

由于泛型擦除的原因,返回值类型是Object[]

2.10、分组

groupingBy()方法是Collectors类中的静态方法

public 

例子:

private 

输出:

groupingBy ==================
papaya=1
orange=1
banana=2
apple=3

2.11、分区

public 

partitioningBy() 分区方法,可以看做是分组的一种特殊情况,在分区中key只有两种情况:true或false,目的是将待分区集合按照条件一分为二。

// 按是否以"a'开头分为两部分

输出:

partitioningBy ==================
{false=[banana, orange, banana, papaya], true=[apple, apple, apple]}

2.12、flagMap

一对多转换,flatMap与map的区别在于 flatMap是将一个流中的每个值都转成一个个流,然后再将这些流扁平化成为一个流。

/*使用map并不能实现我们现在想要的结果,而flatMap是可以的。

输出:

flagMap ==================
[java.util.stream.ReferencePipeline$Head@15975490, java.util.stream.ReferencePipeline$Head@6b143ee9]
[H, e, l, o, W, r, d]

和map的区别

public 

map和flagMap结果一样,但map处理方式是在foreach中将cityList作为集合再次循环,而flatMap可以直接将cityList中的城市直接进行循环输出。也就是说flatMap可以获取集合中的集合的流在外层可以直接处理。

2.13、查找

allMatch

用于检测是否全部都满足指定的参数行为,如果全部满足则返回true

anyMatch

anyMatch则是检测是否存在一个或多个满足指定的参数行为,如果满足则返回true

noneMatch

oneMatch用于检测是否不存在满足指定行为的元素,如果不存在则返回true

findFirst

findFirst用于返回满足条件的第一个元素

findAny

findAny相对于findFirst的区别在于,findAny不一定返回第一个,而是返回任意一个

private 

输出:

findMap ==================
true
apple
apple

2.14、字符串拼接

public 

参数为连接符,返回值为一个集合。

private 

输出:

join ==================
[张无忌, 周芷若, 赵敏, 张强, 张三丰]
张无忌,周芷若,赵敏,张强,张三丰

2.15、归约

Optional

rudece方法的功能是从一个流中生成一个值,reduce方法参数为一个函数,返回值为Optional对象。

private 

输出:

reduce ==================
25
7

2.16、去重

Stream

例子;

private 

输出:

distinct ==================
apple
banana
orange
papaya
http://www.lbrq.cn/news/776341.html

相关文章:

  • 深圳营销型网站公司电话/如何做营销推广
  • 体验比较好的网站/河北seo公司
  • wordpress 白色/北京企业网站seo平台
  • 湖南省网站备案时间/优化设计三年级上册答案
  • 深圳网站制作易捷网络/现在最火的推广平台有哪些
  • 温州外贸网站建设/外链网站是什么
  • 武汉平台网站建设 APP/网站营销网站营销推广
  • 鹤山网站建设/google收录提交入口
  • 宁波拾谷网站建设/微信推广链接怎么制作
  • wordpress建站打不开二级页面/简述优化搜索引擎的方法
  • 广州做网站的公司/最近爆发什么病毒感染
  • 怎么做网站音乐/软文推广是什么
  • 网站建设 网址导航/个人如何在百度上做广告
  • 谷歌优化seo/宁波seo搜索优化费用
  • 营销展示型网站建设价格/国产搜什么关键词最好看
  • 网站推广策划报告/小程序怎么引流推广
  • 我做网站啦 圆通导航/软文世界
  • 哪建设网站/最近一周的重大新闻
  • 网站建设应计入哪个会计科目/河北网站seo地址
  • 大作设计网站是中国的吗/成都seo招聘
  • 软件公司招聘/seo优质友链购买
  • 合肥教育网站建设/北京网站优化排名
  • 天津网站建设包括哪些/如何做网站
  • html5 网站 源码/阿里域名注册网站
  • 在淘宝上做代销哪个网站好/百度一下百度官网
  • 免费网站建设网站推广/名片seo什么意思
  • 关于网站开发网页上传和网站发布/门户网站制作
  • 贸易型企业网站建设/seo优化教程培训
  • 锦州电脑网站建设/辽宁和生活app下载安装
  • 学做网站看那个网/成都调查事务所
  • PaddlePaddle 模型训练技巧
  • 游戏中角色持枪:玩家操控角色,角色转向时枪也要转向
  • 激光干涉法在碳化硅衬底 TTV 厚度测量中的精度提升策略
  • 【Leetcode】随笔
  • 分享一款基于STC32G12K128单片机的螺丝机供料器控制板 ES-IO2422 S4
  • 爬虫与数据分析入门:从中国大学排名爬取到数据可视化全流程