gpt4 book ai didi

java - Drools:访问 ArrayList 作为 Map 中的值

转载 作者:行者123 更新时间:2023-12-01 16:30:35 24 4
gpt4 key购买 nike

我正在尝试访问 ArrayList 的元素,即映射的值。

例如:

{"height": [-10,20]} 我试图获取单个值“-10”,以便在条件下进行比较。

现在我正在做:

rule "test"
when
Params(tol: tolerance) //recieving the Map
eval( tol.get("height").get(0) < 0 )
then
...
end

它表示 get 函数不是 Object 类型的一部分。如何获取数组列表值?

最佳答案

假设您的类(class)如下所示:

class Params {
private Map<String, List<Integer>> tolerance;
public Map<String, List<Integer>> getTolerance() { return this.tolerance; }
}

那么您应该能够构建如下规则:

rule "test"
when
// get the Tolerance map and assign to $tolerance
Params( $tolerance: tolerance )

// get the 'height' list from the $tolerance map, assign to $height
Map( $height: this["height"] ) from $tolerance

// Check if the first integer in the $height list is negative
Integer( this < 0 ) from $height.get(0)
then
...
end

this[ key ] 语法仅适用于 map 。根据您配置 Drools 的方式以及您使用的 Drools 版本的旧版本,$height 可能会被提取为对象,这意味着您必须先转换为列表,然后才能使用使用 get(#) 方法。

尽可能避免 eval,因为 Drools 编译器无法优化这些调用。

关于java - Drools:访问 ArrayList 作为 Map 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62049226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com