如何删除哈希表中的项目并相应地调整键?

时间:2013-02-18 12:31:56

标签: android hashtable

目前我有一个主屏幕,用户存储他们在本学期学习的课程的标题,并且与每个课程相关联的是他们的作业和这些课程的flashCards。当用户长按主页上的某个项目时,我想删除该类及其所有内容(包括所有flashCards和分配)。

遗憾的是,我愚蠢地将数据存储在哈希表中,并将键作为整数存储。当我从表中删除项目时,这会导致一些问题。这些键与主屏幕上的位置直接相关,当用户从中删除某些内容时,我似乎无法弄清楚如何重新调整哈希表。

我已经考虑过使用其他数据结构,例如arrayList,但问题是用户可能并且很可能只有一组闪存卡或只有一个赋值,而它恰好位于第四个位置主屏幕。这意味着在我可以在第4个位置插入值之前,我必须首先用null填充前3个位置。我绝对不认为我想要那个......

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我担心,根据您当前的实施情况,您将无法重新调整HashTable中的数字。我建议您对屏幕上的项目使用LinkedList,并将迭代器存储到HashTable中该列表中的元素。这样您就可以有效地删除任何项目。

答案 1 :(得分:0)

只需为所有实体(例如类,用户和作业)分配唯一ID即可。使用这些唯一ID(可以是整数)作为键,以及在您需要引用实体的所有其他位置。不要使用实体的连续顺序作为标识符,因为它可能会在删除项目时更改,甚至可能在项目重新排序时更改。