java流处理

前言

java流处理是java8最重要的特性,在处理一些集合的时候特别方便。在工作中经常用到,做一下笔记总结一下吧!流处理内容很多,我重点写工作中经常使用的几种场景。要想详细了解,请看java8新特性之流式处理.

简介

项目中,我需要对用户的身份证进行脱敏处理,因为数据涉及推送至其他平台,所以无法在sql语句和service层处理,需要在controller层处理。

List<BlacklistEntity> blacklistList = (List<BlacklistEntity>) page.getList();
for(BlacklistEntity black : blacklistList){
	black.setIdcardno(StringUtil.TMIDCard(black.getIdcardno()));
}

上面是通常处理方法,下面使用流处理相同的操作

page.setList(page.getList().stream().map(m->{
	EntJkmRecordEntity s = (EntJkmRecordEntity)m;
	s.setIdcard(StringUtil.TMIDCard(s.getIdcard()));
	return s;
}).collect(Collectors.toList()));

虽然我也没看出简洁了多少,但是在有些时候会简洁很多,而且如果是多线程处理会更加快捷。

常用操作

筛选(filter)

在一个集合中筛选出符合我们的集合

List<String> strList = new ArrayList<>();
strList.add("ABC");
strList.add("BAC");
strList.add("CBD");
strList.add("DEF");
strList.add("EGH");
strList.add("FJK");
strList.add("GBK");
// 筛选包含 "B" 的字符串组成新的列表
List aList =  strList.stream().filter(str -> str.indexOf("B")>-1).collect(Collectors.toList());
System.out.println("strList"+strList);
System.out.println("aList"+aList);

输出:

strList[ABC, BAC, CBD, DEF, EGH, FJK, GBK]
aList[ABC, BAC, CBD, GBK]
stream()操作将集合转换成一个流

filter()执行我们自定义的筛选处理

lambda表达式

collect()对结果进行封装处理

Collectors.toList()指定其封装成为一个List集合返回

lambda表达式

// 1. 不需要参数,返回值为 5  
() -> 5  
  
// 2. 接收一个参数(数字类型),返回其2倍的值  
x -> 2 * x  
  
// 3. 接受2个参数(数字),并返回他们的差值  
(x, y) -> x – y  
  
// 4. 接收2个int型整数,返回他们的和  
(int x, int y) -> x + y  
  
// 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void)  
(String s) -> System.out.print(s)
->      执行
::       执行类中的方法

映射(map)

一般用于处理集合中对象的数据

page.setList(page.getList().stream().map(m->{
	EntJkmRecordEntity s = (EntJkmRecordEntity)m;
	s.setIdcard(StringUtil.TMIDCard(s.getIdcard()));
	return s;
}).collect(Collectors.toList()));

还有一些没用到我就不写了,以后用到再记录下来。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值