gpt4 book ai didi

java - Drools - 检查 map 是否存在连续日期

转载 作者:行者123 更新时间:2023-12-01 11:11:28 25 4
gpt4 key购买 nike

我的集合( map )包含 7 天的数据。 HashMap 的键是格式为 YYYY-MM-DD 的日期
我需要创建一个规则来检查 List[String] 中是否所有日期都存在字符串,并且所有日期都是连续日期。有什么办法可以做到吗?

我正在尝试使用 contains,但它不包括检查连续日期。

    rule "bonus A"

lock-on-active true
when
dataBinding : DataBinding($data : data) items : List( size > 6 )
from collect( List(this contains "1" &&
this contains "2" &&
this contains "3" ) from $data.values ) then
dataBinding.addPoint(7.5);
end

这是我的代码

Map<String, Object> data = new HashMap<String, Object>();
data.put("2015-08-03", Arrays.asList("2", "3", "1", "4"));
data.put("2015-08-05", Arrays.asList("2", "3", "1", "4"));
data.put("2015-08-04", Arrays.asList("2", "3", "1", "4"));
data.put("2015-08-07", Arrays.asList("2", "3", "1", "4"));
data.put("2015-08-06", Arrays.asList("2", "3", "1", "4"));
data.put("2015-08-09", Arrays.asList("2", "3", "1", "4"));
data.put("2015-08-08", Arrays.asList("2", "3", "1", "4"));
DataBinding dataBinding = new DataBinding();
dataBinding.setData(data);

ksession.insert(dataBinding);
ksession.fireAllRules();

感谢您的任何建议。

最佳答案

我建议您编写一个静态方法来检查一组七个字符串值是否表示七个连续日期:

static boolean consecutive (Set<String> dates){
// ...
}

并向规则添加约束:

rule "bonus A"
when
dataBinding : DataBinding($data : data)
eval( consecutive( $data.keySet() ) )
items : List( size > 6 ) ...

没有简单的方法可以解决这个问题。

您可以将此方法添加为 DRL 函数,只需对语法进行少量更改 - 请参阅 Drools 手册。

关于java - Drools - 检查 map 是否存在连续日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32305036/

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