Java8-02

举报
kwan的解忧杂货铺 发表于 2024/08/30 23:12:18 2024/08/30
【摘要】 1.filter 过滤//筛选符合条件的数据List<DdlNode> collect = dagConf.getNodes().stream().filter(t -> NodeTypeEnum.OUT.name().equalsIgnoreCase(t.getType())) .collect(Collectors.toList());//或者条件storeDay += dayS...

1.filter 过滤

//筛选符合条件的数据
List<DdlNode> collect = dagConf.getNodes().stream().filter(t -> NodeTypeEnum.OUT.name().equalsIgnoreCase(t.getType()))
    .collect(Collectors.toList());
//或者条件
storeDay += dayStoreSkuSizeInvSalDTOList.stream().filter(p1 -> p1.getFlag() == 1 || p1.getFlag() == 3).count();
//并且条件
storeDay += dayStoreSkuSizeInvSalDTOList.stream().filter(p1 -> p1.getFlag() == 1 && p1.getFlag() == 3).count();

2.筛选是否存在

  final boolean exist = value.stream()
                    .filter(x -> x.getFlag().equals(FlagEnum.RED.getCode())).collect(Collectors.toList()).size() > 0;

3.最小最大

//最小值
final Integer minWeek = timeAxisDTOS.stream().min(Comparator.comparing(x -> x.getFinancialWeek())).get().getFinancialWeek();

//最大值
final Integer maxWeek = timeAxisDTOS.stream().max(Comparator.comparing(x -> x.getFinancialWeek())).get().getFinancialWeek();

4.找到第一个存在的

final Optional<AdsDimFinancialYearWeekInfoDO> first = dimList.stream().filter(t -> t.getFinancialYear().equals(finalYear)&& t.getFinancialYearWeek().equals(finalWeek)).findFirst();
if (first.isPresent()) {
final AdsDimFinancialYearWeekInfoDO yearWeekInfo = first.get();
}

5.多条件筛选

final Set<String> headerFilterList = pageQuery.getHeaderFilterList();
        if (CollectionUtils.isNotEmpty(headerFilterList)) {
            tags = tags.stream().filter(t -> headerFilterList.contains("salQty") ? t.getSalQty() > 0 : true)
                    .filter(t -> headerFilterList.contains("replenishQty") ? t.getReplenishQty() > 0 : true)
                    .filter(t -> headerFilterList.contains("orderNotArriveQty") ? t.getOrderNotArriveQty() > 0 : true)
                    .filter(t -> headerFilterList.contains("replenishNotArriveQty") ? t.getReplenishNotArriveQty() > 0 : true)
                    .collect(Collectors.toList());
        }

6.模糊筛选

final String productCode = pageQuery.getProductCode();
        if (StringUtils.isNotEmpty(productCode)) {
            tags = tags.stream().filter(t -> t.getProductCode() != null && t.getProductCode().indexOf(productCode) > -1).collect(Collectors.toList());
        }

7.或者筛选

final Set<String> invQtyList = pageQuery.getInvQtyList();
        if (CollectionUtils.isNotEmpty(invQtyList)) {
            if (!invQtyList.contains("A") && !invQtyList.contains("B") && invQtyList.contains("C") && invQtyList.contains("D")) {
                tags = tags.stream().filter(t -> t.getInvQty() >= 50)
                        .collect(Collectors.toList());
            } else {
                tags = tags.stream().filter(t ->
                        (invQtyList.contains("A") && t.getInvQty() <= 0) ||
                                (invQtyList.contains("B") && t.getInvQty() > 0 && t.getInvQty() < 50) ||
                                (invQtyList.contains("C") && t.getInvQty() > 50 && t.getInvQty() < 300) ||
                                (invQtyList.contains("D") && t.getInvQty() >= 300)

                ).collect(Collectors.toList());
            }
        }

8.反射筛选

 final Set<String> headerFilterList = pageQuery.getHeaderFilterList();
        if (CollectionUtils.isNotEmpty(headerFilterList) && !headerFilterList.contains(CommonConstant.ALL)) {
            for (String item : headerFilterList) {
                if (StringUtils.equals("replenishQty", item) || StringUtils.equals("orderNotArriveQty", item) || StringUtils.equals("replenishNotArriveQty", item)) {
                    tags = tags.stream().filter(t -> Objects.nonNull(Reflect.on(t).field(item).get()) && (Integer) Reflect.on(t).field(item).get() != 0).collect(Collectors.toList());
                } else {
                    tags = tags.stream().filter(t -> Objects.nonNull(Reflect.on(t).field(item).get()) && (Integer) Reflect.on(t).field(item).get() > 0).collect(Collectors.toList());
                }
            }
        }

9.条件成立才过滤

products = products.stream()
                        .filter(x -> StringUtils.equals(x.getCategoryName1(), categoryName1))
                        .filter(x -> StringUtils.isEmpty(genderName) || StringUtils.equals(x.getGenderName(), genderName))
                        .filter(x -> StringUtils.equals(x.getIsnewFlag(), "0"))
                        .collect(Collectors.toList());

10.Match

  • anyMatch: 匹配到任何一个元素和指定的元素相等,返回 true
  • allMatch():匹配到全部元素和指定的元素相等,返回 true
  • noneMatch():与 allMatch() 效果相反
List<String> strList = ListUtil.toList("a", "b", "c", "d");
        boolean a = Optional.ofNullable(strList).orElseGet(ListUtil::toList)
                .stream()
                .anyMatch(obj -> obj.equals("a"));
        System.out.println("anyMatch()测试多元素结果:" + a);
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。