使用函数式编程使用,过滤重复数据

Java8 Stream简化数据处理
本文介绍Java8中Stream API如何简化数据处理任务,通过两个实际场景演示如何使用Stream进行字段抽取和数据去重,显著提升开发效率。

Java8引入新特性,关于Lambda表达式、函数式编程、流式操作引入,大大方便了开发人员,简单的几行代码就可以实现复杂的操作,提高代码的高逼格。废话不多,直接上案例代码。

1、场景一:获取到数据库中的数据集合,需要获取集合中的某一个字段,并返回list

Java8之前可能需要循环遍历,构造一个list<string>数组,一个一个添加。但是有了Stream操作。只需要一行代码就可以帮你实现抽取某一字段。

List<String> nameList = list.stream().map(NationalRegion::getName).collect(Collectors.toList());

2、场景一:获取到数据库中的数据集合,根据集合中数据的某一字段过滤掉集合数据中重复的对象,并返回list

//获取到list数据
List<GoodsCategory> list = goodsCategoryDao.find(query);
//对数据进行去重(根据id进行去重)
categoryList =categoryList.stream()
             .filter(distinctByKey(Category::get_id)).collect(Collectors.toList());

需要引入distinctByKey函数方法,此方法无需修改

private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor){
     ConcurrentHashMap<Object, Boolean> map = new ConcurrentHashMap<>();
     return t -> map.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

双木林L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值