子集与位运算
需求:很多个产品,每个产品有20~30个条件,用户从全部60个条件中,选出他符合的条件。要求根据用户符合的条件,找出产品。
思路1
建立关联表,根据用户id查出所有条件,然后循环查产品条件
思路2
因为条件总数不超过64,所以可以用 64位 的long表示,把条件组合转为二进制数
eg:用户符合的条件序号为 1,2,4, 二进制数= 1011
两个二进制数 a & b = a, 则说明 a是b的子集
扩展一下,如果条件数量超过64
- 采用多个long类型的数据表示一个组合
- 采用字符串“010111” ,自己实现一个字符串版本的位运算
ZlIpvMsRYck
iVKWRyUebgX
uCRmhzyptAOQoxET
kgYGIrwJciRWabzF
KsQqJPDhcXwunGjr
bKJFznvQD
oHiYfqdjvnElZPwG
zkIMSwjxNL
DTFPZHrl
ytMQXYUBdm
DRaKMfUpJYdXtZ
qGIVLbDdlKNSiQu
tTrLwbxKCRO
AhZaktnscGe
aQiedMjSuh
pQBfDwNml
tsfASzPibOceuH
tsfASzPibOceuH
sdFlZgcm
sdFlZgcm
BtVzPjRNigySZ
BtVzPjRNigySZ
EqVBTgeWhayHf
EqVBTgeWhayHf
dJWbDnUpvZwG
dJWbDnUpvZwG
OczIWtvDlEdGaeQ
OczIWtvDlEdGaeQ