lambda小白总结开发常用方法

lambda小白总结

常用方法一
根据指定条件过滤(过滤条件可以指定方法进行过滤)
List exsits = medicalProjectInfoDao.selectPidListForPids(pids);
List updateList = list.parallelStream().filter(o -> exsits.contains(o.getId())).collect(Collectors.toList());
List insertList = list.parallelStream().filter(o -> !exsits.contains(o.getId())).collect(Collectors.toList());
指定过滤方法进行过滤:
subscribes = subscribes.stream().map(o -> processSelect(o, scolist)).collect(Collectors.toList());
private SubscribeVO processSelect(SubscribeVO o, List alist) {
if (alist == null || alist.isEmpty()) {
o.setSelect(0);
return o;
}
if (alist.contains(o.getId())) {
o.setSelect(1);
} else if (alist.get(0) == 0) {
o.setSelect(1);
} else {
o.setSelect(0);
}
return o;
}
常用方法二
list转map
value为对象元素:
Map<Integer, ProjectStageDTO> map = dtos.stream().collect(Collectors.toMap(ProjectStageDTO::getLevel, Function.identity()));
value为自定对象中的元素:
Map<Integer, String> map = stages.stream().collect(Collectors.toMap(KeyValueVO::getId, KeyValueVO::getName));
常用方法三
数组转list
String[] cidlist = cidStr.split(",");
List cids = Arrays.stream(cidlist).map(o -> Long.valueOf(o)).collect(Collectors.toList());
常用方法四
拿到集合中的指定元素
List nids = notices.stream().map(ProjectNoticeOriginalEntity::getId).collect(Collectors.toList());
常用方法五
把集合中的元素转成字符串且以逗号隔开
List anames = areaDao.selectAreaNameList(alist);
String areas = anames.stream().collect(Collectors.joining(","));
常用方法六
根据某个元素进行去重
List pname = re.stream().map(MedicalSubscribeRecordEntity::getProjectName).distinct().collect(Collectors.toList());
常用方法七
分组
Map<Long, List> listMap = list.stream().collect(Collectors.groupingBy(MedicalSubscribeRecordEntity::getUid));
常用方法八
统计
Long count = list.parallelStream().filter(o -> o.getDynamicName().equals(dynamicEntity.getDynamicName())).count();

总结stream与parallelStream的区别:
stream就是java8提供的一种流的操作,比较Iterator,后者是串行化的操作,所谓的串行化操作就是一次拿出一个进行操作,处理完上一个然后进行下一个,而并行化操作是多线程操作,最后结果一块输出。
parallelStream提供了流的并行处理,它是Stream的另一重要特性,其底层使用Fork/Join框架实现。
串行流:适合存在线程安全问题、阻塞任务、重量级任务,以及需要使用同一事务的逻辑。
并行流:适合没有线程安全问题、较单纯的数据处理任务。

个人理解stream与parallelStream的区别就是parallelStream在处理较大数据的操作时比stream效率较快,但是parallelStream要慎用。

正所谓尺有所短,寸有所长,这是初出茅庐的小白的理解,理解不对的地方,欢迎各位前辈进行指导。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值