java8 简便的map和list操作
如果你看到这篇文章,说明你对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操作的更多相关文章
- java8中的map和reduce
java8中的map和reduce 标签: java8函数式mapreduce 2014-06-19 19:14 10330人阅读 评论(4) 收藏 举报 分类: java(47) FP(2) ...
- Java8 如何进行stream reduce,collection操作
Java8 如何进行stream reduce,collection操作 2014-07-16 16:42 佚名 oschina 字号:T | T 在java8 JDK包含许多聚合操作(如平均值,总和 ...
- 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 ...
- Java8中的Stream流式操作 - 入门篇
作者:汤圆 个人博客:javalover.cc 前言 之前总是朋友朋友的叫,感觉有套近乎的嫌疑,所以后面还是给大家改个称呼吧 因为大家是来看东西的,所以暂且叫做官人吧(灵感来自于民间流传的四大名著之一 ...
- Guava中这些Map的骚操作,让我的代码量减少了50%
原创:微信公众号 码农参上,欢迎分享,转载请保留出处. Guava是google公司开发的一款Java类库扩展工具包,内含了丰富的API,涵盖了集合.缓存.并发.I/O等多个方面.使用这些API一方面 ...
- 003-Tuple、Array、Map与文件操作入门实战
003-Tuple.Array.Map与文件操作入门实战 Tuple 各个元素可以类型不同 注意索引的方式 下标从1开始 灵活 Array 注意for循环的until用法 数组的索引方式 上面的for ...
- vector 与map的下标操作
1.vector的下标操作不会添加元素,只能针对已经存在的元素操作. 2.map的下标操作具有副作用,key不存在,会在map中添加一个具有该key的新元素,新元素的value使用默认构造方法. 3. ...
- golang在多个go routine中进行map或者slice操作应该注意的对象。
因为golang的map和列表切片都是引用类型,且非线程安全的,所以在多个go routine中进行读写操作的时候,会产生“map read and map write“的panic错误. 某一些类型 ...
- pandas-05 map和replace操作
# pandas-05 map和replace操作 map可以做一个映射,对于操作大型的dataframe来说就非常方便了,而且也不容易出错.replace的作用是替换,这个很好理解. import ...
随机推荐
- SynchronousQueue------TransferQueue源码分析
不像ArrayBlockingQueue.LinkedBlockingDeque之类的阻塞队列依赖AQS实现并发操作,SynchronousQueue直接使用CAS实现线程的安全访问.由于源码中充斥着 ...
- Python格式化字符
%s 字符串 %d 有符号整数(十进制) %f 浮点数字(用小数点符号)
- 博客地址更改为csdn博客:https://blog.csdn.net/zysps1
由于博客园不支持markdown的数学公式等语法,有时分享不方便,特更改阵地为csdn:https://blog.csdn.net/zysps1
- ASCII对应码表-键值(完整版)
ASCII对应码表-键值(完整版) Bin (二进制) Oct (八进制) Dec (十进制) Hex (十六进制) 缩写/字符 解释 0000 0000 00 0 0x00 NUL(null) 空字 ...
- bzoj 1283 序列 - 费用流
题目传送门 传送门 题目大意 给定一个长度为$n$的序列,要求选出一些数使得原序列中每$m$个连续的数中不超过$K$个被选走.问最大的可能的和. 感觉建图好妙啊.. 考虑把问题转化成选$m$次数,每次 ...
- 【Django简介001】
一.Django全貌 urls.py 网址入口,关联到对应的view.py中的一个函数(或者generic类),访问网址就对应一个函数 view.py 处理用户发送的请求,从urls.py中对应过来, ...
- JS经典面试题汉诺塔
我爱撸码,撸码使我感到快乐!大家好我是Counter.今天给大家分享的是利用JS将汉诺塔原理实现出来,其实主要是考察一个递归的思想,复杂的问题简单化,汉诺塔应该都知道吧,具体的游戏规则,可以百度查查, ...
- XSS漏洞学习笔记
XSS漏洞学习 简介 xss漏洞,英文名为cross site scripting. xss最大的特点就是能注入恶意的代码到用户浏览器的网页上,从而达到劫持用户会话的目的. 说白了就是想尽办法让你加载 ...
- 初识redux走向redux-react
废话不多说,先上一张图 首先记住redux设计思想 Web应用是一个转态机,视图与转态是一一对应的 所有的转态,保存在一个对象里 1.store 存储数据的容器,整个应用只有一个state,Redux ...
- canvas 经典播放器图标
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...