1

我有一个运输限制表,其中包含以下规则:
ProductClass:'Suites' 不能运送到 'Georgia',
ProductClass:'Body Spray' 和 Hazmat:True 不能运送到 Postal Code:322001
ProductClass:'Baby Toys' 可以不能运送到“美国”,
我们有一条规则,例如,我不能将任何物品运送到“亚利桑那”州。

ProductClass、Hazmat 和 ShippingMethod 是一组(零个或多个属性可以有值)。
同样,邮政编码、州、国家是另一组(每条规则只有一个填充值)。
这是配置/静态数据,它会很大(超过 10k 条规则)

规则 ID 产品类别 危险品 邮寄方式 邮政编码 状态 国家
1 西装 乔治亚州
2 身体喷雾 真的 322001
3 身体喷雾 322009
4 婴儿玩具 我们
5 枪械 佛罗里达
6 枪械 空气 夏威夷
7 亚利桑那

现在我收到了 3 件商品的订单,例如:
Item1:ProductClass 'A',Hazmat:false,ShippingMethod:'ByAir',postalCode:322002,state:'Texas'
Item2:ProductClass 'E',Hazmat:false,ShippingMethod:'ByAir ', postalCode:322009, state:'Texas'
Item3: ProductClass 'D', Hazmat: false, ShippingMethod:'ByAir', postalCode:322011, state:'Florida'

当我收到订单时(在我的示例中,我收到了 3 件商品的订单),我需要通过上面配置的所有这些限制规则运行,如果一个项目有一个/多个限制规则匹配,则需要记录它们。

在 Java 中实现这一目标的最佳算法是什么。

4

0 回答 0