如果你看到这篇文章,说明你对java繁琐的list和map操作产生了厌烦。在java中,频繁的操作基本上是获取到对象list,然后根据某个属性或者某几个属性的值,把list转为map,然后遍历其他对象的数组,为其他对象赋值。使用java8可以简化不停的for循环,例子如下:

1、获取id,最后使用set收集。当然,也可以使用list。

Set<Long> customerIds = orders.stream().map(TradeOrder::getCustomerId).collect(Collectors.toSet());

2、根据id把对象list变为map。

Map<Long, TradeCustomerCredit> map = tradeCustomerCredits.stream().collect(Collectors.toMap(TradeCustomerCredit::getTradeOrderId, a -> a, (k1, k2) -> k1));

3、遍历其他对象的数组,为其他对象赋值。

orders.stream().map(a->{
if(map.containsKey(a.getOrderId())){
a.setTradeCustomerCredit(map.get(a.getOrderId()));
}
return a;
}).collect(Collectors.toList());

4、统计数组对象某元素出现的次数。

Map<String, Long> map = resultList.stream().
collect(Collectors.groupingBy(a -> String.valueOf(a.getStatus()), Collectors.counting()));

5、根据条件过滤数组。

resultList.stream().
filter(a -> (a.getStatus().intValue() == TradeOrderStatus.SUCCESS.getCode()) || (a.getStatus().intValue() == TradeOrderStatus.TOBE_CONFIRM.getCode())).
collect(Collectors.toList());

java8 简便的map和list操作的更多相关文章

  1. java8中的map和reduce

    java8中的map和reduce 标签: java8函数式mapreduce 2014-06-19 19:14 10330人阅读 评论(4) 收藏 举报  分类: java(47)  FP(2)  ...

  2. Java8 如何进行stream reduce,collection操作

    Java8 如何进行stream reduce,collection操作 2014-07-16 16:42 佚名 oschina 字号:T | T 在java8 JDK包含许多聚合操作(如平均值,总和 ...

  3. java8 list转Map报错Collectors.toMap :: results in "Non-static method cannot be refernced from static context"

    1.问题:java8 list转Map 报错Collectors.toMap :: results in "Non-static method cannot be refernced fro ...

  4. Java8中的Stream流式操作 - 入门篇

    作者:汤圆 个人博客:javalover.cc 前言 之前总是朋友朋友的叫,感觉有套近乎的嫌疑,所以后面还是给大家改个称呼吧 因为大家是来看东西的,所以暂且叫做官人吧(灵感来自于民间流传的四大名著之一 ...

  5. Guava中这些Map的骚操作,让我的代码量减少了50%

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处. Guava是google公司开发的一款Java类库扩展工具包,内含了丰富的API,涵盖了集合.缓存.并发.I/O等多个方面.使用这些API一方面 ...

  6. 003-Tuple、Array、Map与文件操作入门实战

    003-Tuple.Array.Map与文件操作入门实战 Tuple 各个元素可以类型不同 注意索引的方式 下标从1开始 灵活 Array 注意for循环的until用法 数组的索引方式 上面的for ...

  7. vector 与map的下标操作

    1.vector的下标操作不会添加元素,只能针对已经存在的元素操作. 2.map的下标操作具有副作用,key不存在,会在map中添加一个具有该key的新元素,新元素的value使用默认构造方法. 3. ...

  8. golang在多个go routine中进行map或者slice操作应该注意的对象。

    因为golang的map和列表切片都是引用类型,且非线程安全的,所以在多个go routine中进行读写操作的时候,会产生“map read and map write“的panic错误. 某一些类型 ...

  9. pandas-05 map和replace操作

    # pandas-05 map和replace操作 map可以做一个映射,对于操作大型的dataframe来说就非常方便了,而且也不容易出错.replace的作用是替换,这个很好理解. import ...

随机推荐

  1. 关于eric4和pyqt的入门学习(转)

    在Eric4下用PyQt4编写Python的图形界面程序 转载请注明作者RunningOn 本文是PyQt4的入门教程.网上能搜到其它教程,但我觉得讲得不是很清楚,希望这篇文章对入门者更加有帮助. 先 ...

  2. linux 看执行任务的一些邮件

    cat /var/spool/mail/root From root@hadoop01.localdomain Fri Apr 12 18:44:01 2019 Return-Path: <ro ...

  3. 新疆大学ACM-ICPC程序设计竞赛五月月赛(同步赛)A Red Rover

    题目链接 大概意思就是,找出一个字串,将其所有出现的地方替换成一个字母M后的长度len1,然后再加上这个字串的长度t_len得到一个新的长度len,求这个len最小等于多少. 当然,也可以不找这个串, ...

  4. php,js 对字符串按位异或运算加密解密

    异或的符号是^.按位异或运算, 对等长二进制模式按位或二进制数的每一位执行逻辑按位异或操作. 操作的结果是如果某位不同则该位为1, 否则该位为0. xor运算的逆运算是它本身,也就是说两次异或同一个数 ...

  5. P2774 方格取数问题(网络流)

    P2774 方格取数问题 emm........仔细一看,这不是最大权闭合子图的题吗! 取一个点$(x,y)$,限制条件是同时取$(x,y+1),(x,y-1),(x+1,y),(x-1,y)$,只不 ...

  6. Html5 Page Creator,简易h5页面场景制作

  7. CEF JS实现获取剪贴板图片的DataURL

    转载:https://www.deanhan.cn/js-paste-upload.html 转载:https://segmentfault.com/a/1190000002915597 转载:htt ...

  8. C# 数组与集合的区别

    数组:声明数组的时候必须指定数组的长度.数组在内存中是连续的,索引速度很快,赋值和修改也很简单. 数组的容量是固定的,您只能一次获取或设置一个元素的值,而ArrayList或List的容量可根据需要自 ...

  9. 强杀apt-get install进程导致错误的修复办法

    关闭了一个安装缓慢的apt-get install终端窗口,安装另一个软件,提示打不开var下的一个锁(没加sudo也是这个错误但会提示是非root用户权限不够导致,但这里不是这个问题),说是另一个进 ...

  10. IDEA ----Apachemaven连接私服,mavenWed工程 、以及Tomcat配置和项目的部署

    1.Apachemaven连接私服, 首相先下载Apachemaven文件(压缩包和解压后的) 打开maven下的conf文件下的settin.xml, 配置setting.xml文件 其他信息随便写 ...