关于Java集合的流操作,整理一下加深印象。
本文最后更新于:3 个月前
前言
一些碎碎念,这是我的标准格式。
不说几句废话,感觉写博客就失去了灵魂,说一下最近吧,最近在开发一个基本的中国式报表,被里面的逻辑着实恶心到了,我们先来看一下报表的需求是什么样子的。
里面的数据全部需要在看不清的也没关系,不太需要看清喔,如果想看清的话,可以留个评论并留个联系方式,我发给你瞅一瞅。话说也不是很复杂喔,在中国式报表中,这种一般般啦,这里面需要填的数只有18列,剩下的所有就都需要通过这18列来计算得出,行于行需要计算,列于列也需计算。由于数据并不是一次性导入,所以只能把计算逻辑放在server层里面。就是显示的时候来计算。具体是有点复杂的。逐渐偏离主题,就是在这里我用到了一些Stream流的一些东西加上之前也用到,所以就在这里做一个总结归纳
Stream的由来
太复杂我也不想说,打字有点累,我们正常处理集合里的数据时,第一想到的是不是就是for循环嘞,别问,问就是循环大法。确实,面向对象的编程思维,让我们第一时间想到的就是一个一个循环然后进行一些过滤,查找,分类操作。在Java没有流之前,大家伙都这么干为什么Java8要推出流这个东西呢,显而易见,肯定之前的循环大法再进行这种操作时弊端太多,太垃圾啦。又或者借鉴了JavaScript的高阶函数。说起流还是得说说Lambda表达式嘛,如果没有Lambda表达式也不会有这玩意。Lambda表示就是就是函数式接口,让Java这个严格的面向对象的编程语言,产生了微妙的化学反应。如果一个人先学JavaScript的再来学Java,我能感受到他内心的崩溃,满嘴fack。好家伙,过滤个集合,还要new一个新集合,然后还要遍历,Java在编程语言上的的神话,是不是闹呢。确实早些年Java为了代码的严谨以及可读性,牺牲了太多。但这,也是Java成功的原因。
Stream流的用法
话不多说,直接上代码,
1 |
|
过滤
1 |
|
排序
1 |
|
分组
1 |
|
归总
1 |
|
用来测试的数据
1 |
|
模拟数据实体类
1 |
|
尾声
害小说看多了,不bb两句难受
我再说几句嘿嘿,其实这些方法,你完全不用死记硬背,背了也没啥用喔,得再脑壳里面归类,分组,这些都是我的工具,大部分人的心理都是这样,我就算暂时用不上我也得要有。我就是这种心理,花里胡哨学了一大堆喔,就算我暂时用不上,万一哪天用上了呢,在我万一哪天碰上后,和一个名字都没听的娃,你说上手谁快,学习其实是越学容易的,当年感觉越学越难时,就别硬往下学了,肯定是积累的疑惑太多了。就比如这个Java的流,难嘛?可以说一点都不难,正常人就算只听过这个名字,百度一下,也会用。那问题又来了,那你弄这个汇总是干啥呢,其实是在培养思想喔,在查询数据这块,sql语句天下第一。我想说大家不要小看任何一款数据库软件,如mysql,数据库软件,可以说是人类智慧的结晶,是一群智商顶尖的人,并将数据结构和算法用到极致才开发出来的东西。我整理这个流的操作时,脑子里想的是,正常的一个select * from user **** ;用JavaAPI应该怎么操作,应该都是能对应上的,对应上之后 ,我就越发感觉Sql厉害。
封面原图
我老懂事人了
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!