我的用例是在多個級別上應用過濾器。把它看作只有2級的樹結構(目前,我的用例只包括2級,但是預期的解決方案應該是有超過2級的可能性)。以下用例的最佳數據結構
*-----------* (Level 1)
/\ /\
/ \ / \
* * * * (level 2)
- 用戶可以接受或在1級或級拒絕規則2.
- 如果用戶接受或拒絕在1級的規則,然後水平以及它所有的孩子應該繼承同樣的財產,這意味着他們也將被接受或拒絕。
- 用戶可以添加例外。例如,根據上述觀點,如果他拒絕第一級的規則,那麼其子女也將被拒絕。但是,用戶可以選擇專門標記已接受的兒童。這些被稱爲例外。
我想要一個數據結構,它應該能夠有效地存儲這些信息並給出數千個單獨的條目,我應該能夠根據用戶的接受偏好過濾數據。
等級1的大小以千爲單位,而等級1的每個成員又可以擁有數千個孩子。
示例 - 讓我們考慮一個問題,其中有來自2個國家(美國和英國)的千人,我想根據用戶要求過濾人員。考慮到用戶在多個級別上有多個選項。
US--------------------------UK (Level 1)
/\ /\
/ \ / \
/ \ / \
/ \ / \
florida texas london Manchester
/\ |\ /\ /\
/\ | \ /\ /\
/ \ | \ / \ / \
Male Female M F M F M F
例一 - 用戶表示,除去所有的人在美國。 因此,儘管穿越的人的名單,我會刪除所有的人,其中國家==美國
爲Eg2 - 用戶說,從列表中刪除美國的所有的人,但得克薩斯州的人不應該被刪除。
Eg3 - 用戶說所有美國人都應該包括在內,除了德克薩斯州的男性。
那麼什麼是最好的數據結構來存儲這些類型的規則,並將其應用在列表上,根據用戶的喜好,讓人們。
只需添加它,就可以有數千個國家和數千個城市。
如果你能提出了兩個級別的數據結構,甚至認爲將是巨大的。
雖然每個級別的大小看起來很大,但是有很多級別嗎?另外,爲什麼這些關卡特別重要?是否有可能設計它,以便如果用戶接受或拒絕某條規則,它會自動移動到頂層(可能存在「已接受」頂部和「已拒絕」頂部)? –
一個具有六個左右規則的具體例子將有助於理解你想要完成的事情。 –
更新了問題 –