- 前言
- 简介
- 常用操作
- 筛选(filter)
- lambda表达式
- 映射(map)
java流处理是java8最重要的特性,在处理一些集合的时候特别方便。在工作中经常用到,做一下笔记总结一下吧!流处理内容很多,我重点写工作中经常使用的几种场景。要想详细了解,请看java8新特性之流式处理.
简介项目中,我需要对用户的身份证进行脱敏处理,因为数据涉及推送至其他平台,所以无法在sql语句和service层处理,需要在controller层处理。
ListblacklistList = (List ) 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)在一个集合中筛选出符合我们的集合
ListstrList = 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()));
还有一些没用到我就不写了,以后用到再记录下来。



