Stream() API使用(1)

1.将source中spitNumber对应的content按序拼接,并按rowNumber返回拼接后的content集合


/**
* 将内容查询结果转换成页面所需格式的数据
*/
private List<String> sqlInfosFormat(List<TempAutoSqlInfo> sources) {
    // 使用Stream API进行分组、排序和拼接
    return sources.stream()
            .collect(Collectors.groupingBy(
                    // 按照rowNumber分组
                    TempAutoSqlInfo::getRowNumber,
                    Collectors.collectingAndThen(
                            Collectors.toList(),
                            list -> list.stream()
                                    // 按splitNumber排序后拼接
                                    .sorted(Comparator.comparingInt(TempAutoSqlInfo::getSplitNumber))
                                    // 拼接content
                                    .map(tempAutoSqlInfo ->
                                            tempAutoSqlInfo.getCaseContent() != null
                                                    ? tempAutoSqlInfo.getCaseContent() : "")
                                    .collect(Collectors.joining())
                    )

            ))
            // 将 Map 转换为包含拼接后 content 的 List
            .entrySet().stream()
            // 结果按rowNumber排序
            .sorted(Map.Entry.comparingByKey())
            .map(Map.Entry::getValue)
            .collect(Collectors.toList());
}

2.取两个集合的差集
private List<BuildAnalysisCase> failThisTime(List<BuildAnalysisCase> thisFailCases, List<BuildAnalysisCase> lastFailCases) {
    // 使用stream求对象集合的差集:ListA中除了不包含ListB中的所有元素
    return thisFailCases
            .stream() //获取第一个集合的stream
            .filter( 
                     analysisCase ->  
                            lastFailCases.stream()  //获取第二个集合的Stream3
                                    .map(BuildAnalysisCase::getCaseKey)  
                                    .noneMatch(  
                                            caseKey -> 
                                                Objects.equals(analysisCase.getCaseKey(), caseKey) //判断id的值是否相等
                                            )
            ).collect(Collectors.toList());
}
3.取两个集合的交集
private List<BuildAnalysisCase> failLastTimeToo(List<BuildAnalysisCase> thisFailCases, List<BuildAnalysisCase> lastFailCases) {
    // 使用stream求对象集合的交集:两次构建中均失败的用例,即两个集合的交集
    return thisFailCases
            .stream() //获取第一个集合的stream
            .filter(
                    analysisCase ->
                            lastFailCases.stream()  //获取第二个集合的Stream3
                                    .map(BuildAnalysisCase::getCaseKey) 
                                    .anyMatch(
                                            caseKey ->
                                               Objects.equals(analysisCase.getCaseKey(), caseKey) //判断id的值是否相等
                                    )
            ).collect(Collectors.toList());
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值