Java8 stream流的常用写法

Java8 stream流的常用写法

实体类集合转单一字段集合

List<BusRiver> busRivers = busRiverMapper.getBusRiver(busRiver);
List<String> collect = busRivers.stream().map(BusRiver::getGeom).collect(Collectors.toList());

Map集合转单一字段集合

List<Map<String,Object>> dataSourceList;
List<Object> name = dataSourceList.stream().map(item -> item.get("name")).collect(Collectors.toList());

在实体类集合中检索某字段的值

List<BusEnterprise> busEnterpriseInfo = busEnterpriseMapper.getBusEnterpriseInfo();
busEnterpriseInfo.stream().map(BusEnterprise::getId).anyMatch(id -> id.equals(busEnterprise.getId()))

按条件筛选实体类集合中的数据

DbOilGasRecovery dbOilGasRecovery = dbOilGasRecoveryMapper.selectDbOilGasRecoveryByCurrentDate();
List<DbOilGasRecovery> collect = dbOilGasRecoveryParams.stream().filter(t -> t.getSystemTime().compareTo(dbOilGasRecovery.getSystemTime()) > 0 && StringUtils.isNotEmpty(t.getSystemTime())).collect(Collectors.toList());

单一字段集合去重

List<String> list = Convert.toList(String.class, ascription.split(","));
list = list.stream().distinct().collect(Collectors.toList());

按实体集合中单一字段去重

List<EnterpriseReportStatistic> list = enterpriseReportStatisticMapper.getPlanFilingData();
List<EnterpriseReportStatistic> enterpriseReportStatistics = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(EnterpriseReportStatistic::getCode))), ArrayList::new));

按实体集合中的多字段去重

List<DbSixAutoOverStandardCheckHourDetail> dbSixAutoOverStandardCheckHourDetail = dbSixSixAutoOverStandardCheckHourDetailMapper.getDbSixAutoOverStandardCheckHourDetail();
dbSixAutoOverStandardCheckHourDetail = new ArrayList<>(dbSixAutoOverStandardCheckHourDetail.stream().collect(Collectors.toMap(item -> String.format("%s%s%s", item.getCheckId(), item.getItemCode(), item.getDt()), item -> item, (existing, replacement) -> existing)).values());

实体类集合筛选->类型转换(指定字段)->统计->获取最大值

List<EnterpriseReportStatistic> list = enterpriseReportStatisticMapper.getPlanFilingData();
int max = list.stream().filter(x -> x.getCode().equals(enterpriseReportStatistic.getCode())).mapToInt((x) -> Integer.valueOf(NumberUtil.decimalFormat("0", x.getMonitorNum()))).summaryStatistics().getMax();

实体类集合筛选->类型转换(指定字段)->统计->求和

List<EnterpriseReportStatistic> list = enterpriseReportStatisticMapper.getPlanFilingData();
long sum = list.stream().filter(x -> x.getCode().equals(enterpriseReportStatistic.getCode())).mapToInt((x) -> Integer.valueOf(NumberUtil.decimalFormat("0", x.getShouldReportNum()))).summaryStatistics().getSum();

实体类集合筛选->类型转换(指定字段)->统计->求均值

List<EnterpriseReportStatistic> list = enterpriseReportStatisticMapper.getPlanFilingData();
double average = list.stream().filter(x -> x.getCode().equals(enterpriseReportStatistic.getCode())).mapToDouble((x) -> Double.valueOf(NumberUtil.decimalFormat("0", x.getFinishRate()))).summaryStatistics().getAverage();

确保集合中的指定字段为“指定值”的要素排在最后一位

List<HashMap<String, Object>> oneList = new ArrayList<>();
oneList.sort((o1, o2) -> {
    if ("指定值".equals(o1.get("指定字段"))) {
        return 1; // Always push "指定值" to the end
    } else if ("指定值".equals(o2.get("指定字段"))) {
        return -1; // Always pull "指定值" to the front
    }
    return 0; // Keep the order unchanged for other elements
});

对集合根据指定字段正序排序

List<HashMap<String, Object>> oneList = new ArrayList<>();
oneList.sort(Comparator.comparingInt(o -> Convert.toInt(o.get("指定字段"))));

对集合根据指定字段倒序排序

List<HashMap<String, Object>> oneList = new ArrayList<>();
oneList.sort((o1, o2) -> Integer.compare(Convert.toInt(o2.get("指定字段")), Convert.toInt(o1.get("指定字段"))));
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

薛定不饿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值