Java基础学习总结(55)——java8新特性:stream
java作为开发语言中的元老已经度过了很多年,最新的java8为我们带来了一些新特性,这些特性可以在以后的工作中为我们的开发提供更多的便捷,现在就让我们看看最新的函数式编程风格怎么在实际的开发中使用。
原本在java中遍历集合也许你会使用以下代码:
上面的代码没有什么问题也可以正常运行,只不过略显繁琐,在java8中我们还可以这样使用:
java8以前要统计list内的数据个数必须使用外部迭代的形式来操作,for循环其实是调用迭代接口进行
迭代而已,而java给我们提供了通过stream的方式简化操作,计数操作只需要直接调用stream的过滤操作后计数即可。
上面只是简单介绍了stream的filter方法,其实stream还提供了map、flatMap、max、min等方法
map提供了将list内数据转换的功能。数据转换在java8之前通常我们会将一个list内的数据转换后放入另一个list,现在在java8里我们只需要这么做:
上图转换只需要一行代码就搞定了。
flatMap从字面意思和map很像,只不过可以将多个stream合并为一个stream再进行操作,flatMap方法返回值必须为stream。大概意思如下:
Max和Min方法就是通过stream找出比较出list内最大值和最小值,如下:
如上所示,我们可以很方便的得出最大值和最小值,是不是很简便呢,基本操作就介绍到这里啦,希望对大家有所帮助!
Java基础学习总结(55)——java8新特性:stream的更多相关文章
- 夯实Java基础系列21:Java8新特性终极指南
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- java基础学习总结三(jdk7新特性、变量(局部变量和成员变量)、常量以及运算符)
一:jdk7新特性 可以表示二进制数值,以0b开头,中间可以使用下划线_分隔符.如下: @Test /** * 测试jdk新特性 */ public void testJdk7(){ int a=0b ...
- Java8 新特性 Stream 无状态中间操作
无状态中间操作 Java8 新特性 Stream 练习实例 中间无状态操作,可以在单个对单个的数据进行处理.比如:filter(过滤)一个元素的时候,也可以判断,比如map(映射)... 过滤 fil ...
- Java8 新特性 Stream() API
新特性里面为什么要加入流Steam() 集合是Java中使用最多的API,几乎每一个Java程序都会制造和处理集合.集合对于很多程序都是必须的,但是如果一个集合进行,分组,排序,筛选,过滤...这些操 ...
- Java8 新特性 Stream 非短路终端操作
非短路终端操作 Java8 新特性 Stream 练习实例 非短路终端操作,就是所有的元素都遍厉完,直到最后才结束.用来收集成自己想要的数据. 方法有: 遍厉 forEach 归约 reduce 最大 ...
- Java8 新特性 Stream 短路终端操作
短路终端操作 Java8 新特性 Stream 练习实例 传入一个谓词,返回传为boolean,如果符合条件,则直接结束流. 匹配所有 allMatch 任意匹配 anymMatch 不匹配 none ...
- 这可能是史上最好的 Java8 新特性 Stream 流教程
本文翻译自 https://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/ 作者: @Winterbe 欢迎关注个人微信公众 ...
- java8新特性--Stream的基本介绍和使用
什么是Stream? Stream是一个来自数据源的元素队列并可以进行聚合操作. 数据源:流的来源. 可以是集合,数组,I/O channel, 产生器generator 等 聚合操作:类似SQL语句 ...
- Java8 新特性 Stream 练习实例
练习实例 配合Java8 新特性 Steam() API 使用 //没有写get set 构造方法 public class Sku { private Integer skuId; private ...
- Java8新特性Stream流应用示例
Java8新特性介绍 过滤集合 List<String> newList = list.stream().filter(item -> item != null).collect(C ...
随机推荐
- Mongodb学习总结(1)——常用NoSql数据库比较
虽然SQL数据库是非常有用的工具,但经历了15年的一支独秀之后垄断即将被打破.这只是时间问题:被迫使用关系数据库,但最终发现不能适应需求的情况不胜枚举. 但是NoSQL数据库之间的不同,远超过两 SQ ...
- MySQL 与 MongoDB的操作对比
MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库.它们各有各的优点,关键是看用在什么地方 ...
- pl/sql输入括号后卡顿的解决方式
pl/sql输入括号后卡顿的解决方式 学习了:https://zhidao.baidu.com/question/298275368.html 工具->首选项->用户界面->代码助手 ...
- Arduino Yun高速新手教程(大学霸内部资料)
Arduino Yun高速新手教程(大学霸内部资料) 本资料为国内第一本Arduino Yun教程.具体解说Arduino Yun的基本结构.开发环境.系统配置.并着力解说关键功能--Bridge.最 ...
- Cocos2d-x 2.2.3 使用NDK配置安卓编译环境问题之 Cannot find module with tag 'CocosDenshion/android' in import path
1.当做安卓移植的时候遇到例如以下问题: Android NDK: jni/Android.mk: Cannot find module with tag 'CocosDenshion/android ...
- hdu5386 Cover
Problem Description You have an n∗n matrix.Every grid has a color.Now there are two types of operati ...
- nyoj-647-奋斗小蜗牛在请客(进制转换)
奋斗小蜗牛在请客 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描写叙述 一路艰辛一路收获.成功爬过金字塔的小蜗牛别提多高兴了.这不为了向以前帮助他的哥们们表达谢意,蜗牛宴请 ...
- 易语言VS杀毒软件:基情复燃,转受为攻!
这两天在编程领域里,又发生了一件令人瞩目的事情:以易语言创始人吴涛的一篇檄文<tid=370327">让我们一起来对360误报说不!>为序幕.再次拉开了易语言跟360杀毒软 ...
- Mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。
将select出的结果再通过中间表select一遍,这样就规避了错误.注意,这个问题只出现于mysql,mssql和oracle不会出现此问题. mysql中You can't specify tar ...
- Tomcat 初探(三)多项目部署
起因 昨天房东找我说最近物价飞涨,要涨我房租,混不下去了,得要求老板涨工资.一大清早就去找老板,老板看了看我,让我发布先两个网站:一个前台网站 frontend,给用户用:一个后台管理网站 backe ...