You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Drools规则中扁平化嵌套列表结构的对象集合得到一维列表

解决方案

方法1:直接生成扁平化一维列表(推荐)

你之前的写法是将每个TopObject对应的二级列表作为单个元素存入结果,所以会得到嵌套结构。可以通过多层from嵌套遍历直接收集所有二级对象,无需先汇总TopObject列表:

$SecondLevelObjects: List()
    from accumulate(
        $obj: SecondLevelObject() from $topObj.ListOfSecondLevelObjects
        from TopObject() from $MainFact.ListOfTopObjects;
        collectList($obj)
    )

该写法会直接遍历到最底层的SecondLevelObject再做汇总,最终得到的就是无嵌套的一维列表。

方法2:对已有的二维嵌套列表做扁平化

如果已经生成了二维嵌套列表,可以直接用Java Stream API处理,规则的RHS部分写法如下:

// 假设已拿到二维列表变量$nestedList
List<SecondLevelObject> flattenedList = (List<SecondLevelObject>) $nestedList.stream()
    .flatMap(subList -> ((List<SecondLevelObject>) subList).stream())
    .collect(Collectors.toList());

该方法适用于Java 8及以上的运行环境,无需额外引入依赖。


内容的提问来源于stack exchange,提问作者Brischki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 17:54:04