题
考虑我分配了这样的值的场景
亚马逊-1
沃尔玛-2
目标-4
好市多-8
北京-16
在数据库中,数据是通过根据每个产品的可用性屏蔽这些值来存储的。例如。,
面膜产品说明
1 台笔记本电脑在亚马逊有售
17 iPhone在亚马逊和BJ中可用
24 Costco和BJ的床垫可用
像这些一样,所有产品都被屏蔽并存储在数据库中。
我如何根据蒙版值检索所有零售商。那么我如何以编程方式查找或列出 Costco 和 BJ。任何算法/逻辑都将受到高度赞赏。
解决方案
int mattress = 24;
int mask = 1;
for(int i = 0; i < num_stores; ++i) {
if(mask & mattress != 0) {
System.out.println("Store "+i+" has mattresses!");
}
mask = mask << 1;
}
在if
语句行了的位,如果床垫值具有相同的位作为掩模组,然后其掩模即销售床垫存储。一个和床垫值和掩码值在商店出售的床垫只会是非零。对于每次迭代,我们移动屏蔽位的一个位置到左边。
注意屏蔽值应该是积极的,不是消极的,如果需要的话,你可以乘以负值。
其他提示
假设你在SQL数据库中的意思,然后在您检索SQL,通常可以添加例如WHERE(MyField的和16)= 16,其中(MyField的和24)= 24等。
但是,请注意,如果你想优化这些检索,通常匹配查询的行数比列总数少得多,那么这可能不是代表这个数据非常好办法。在这种情况下,这将是更好为具有包含表示该信息(产品ID,STOREID)对单独的“ProductStore”表(和索引上STOREID)。
http://www.antiifcampaign.com/
记住此。如果你能删除“如果”与其他结构(图/策略模式),对我来说,你可以让它在那里,否则,“如果”,是非常危险的! (F.Cirillo)
在此情况下可以使用地图的地图与位掩码操作。
卢卡。
不隶属于 StackOverflow