我正在寻找一个类似于存储由4个整数组成的复合值的集合的数据结构:i1
,i2
,i3
,i4
。此数据结构应具有快速查找时间,但它还应允许使用特定i3和i4快速删除成员。因此,delete_a(x)
应删除i3 = x
和delete_b(x)
的所有成员,并删除i4 = x
的所有成员。最关键的是成员查找操作,所以我想要它如果可能的话是O(1)。 i1
,i2
,i3
和i4
的值相当大,因此我无法使用4维数组,因为它会占用太多内存。我想也许哈希表和辅助列表的某种组合可以解决这个问题。
答案 0 :(得分:0)
如果你想要绝对速度,同时保持一些内存效率,我会这样做:
HashMap_a:
Key: i3
Value: List of Hash(i1,i2,i3,i4)
HashMap_b:
Key: i4
Value: List of Hash(i1,i2,i3,i4)
HashMap:
Key: Hash(i1,i2,i3,i4)
Value: (i1,i2,i3,i4)
delete_a
只是从HashMap_a
获取列表并从HashMap中删除其键位于列表中的元素。同样适用于delete_b
查找是来自HashMap