如何使用drools规则计算列表中V的百分比。如果V的百分比是80%,则点燃流产规则。
我有一个只有两个值的ArrayList:V和N。
List<String> list = new ArrayList<>();
如何用drools规则计算V的数量,每个V和N值1,得到V和N的总和。
在java中
Map<String, Long> counted = list.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
System.out.println("Counted: "+counted);
上面的表达式打印
计算:{V = 4,N = 15}
获取值后,将会有一个drols规则表达式,如果出现80%,则计数V外观会打印&#34; ok&#34;否则打印不允许。
答案 0 :(得分:0)
这是一个计算列表中V的百分比的规则:
rule "countVN"
when
$vn: ArrayList( $s: size )
accumulate( String( toString == "V" ) from $vn;
$cnt: count( 1 );
$cnt.doubleValue()/$s >= 0.8 )
then
System.out.println( "80% or more" );
end
仅针对&gt; = 80%的情况触发。如果您在任何情况下都需要结果,请使用
...
accumulate( String( toString == "V" ) from $vn;
$cnt: count( 1 ))
then
if( $cnt.doubleValue()/$s >= 0.8 ) ...