我的treeMap
包含guestbookEntries
。密钥用于订购和分页。我有一个问题,当我删除一个条目时,size()
的{{1}}会减少,这会导致帖子被覆盖,例如因为我正在创建一个密钥为guestbookEntries
的新条目。
为了改变这种情况,我想重新排序guestbookEntries.size() + 1
,以便在删除键值对时。以下所有密钥的数量减少了一个,因此TreeMap
中不应存在“间隙”,导致TreeMap
再次正确。
我在考虑这样的事情,其中guestbookEntries.size()
是被删除的条目的关键。
postNumber
有更简单的方法吗?
答案 0 :(得分:1)
我认为,这个解决方案实际上是非常糟糕的主意。想象一下,您希望在留言簿中创建帖子编号。其他人想通过其id
引用这些帖子。但是当你将你的帖子转移回去时,你可能会减少他们所做的id
个问题,因为那个人想要参考帖子。
此外,想象一下,有人删除了帖子#0,你的留言簿中已有100,000个帖子。然后,您的程序将不得不在树形图中移动99,999个帖子对象,减少它们的数量。
在这种情况下唯一可能的好解决方案,不要使用guestbookEntries.size() + 1
作为生成新帖子ID的基础。
而不是只创建一些静态整数字段,使用一些并发就绪类是很好的解决方案,例如AtomicInteger
。
static AtomicInteger postIdGenerator = new AtomicInteger(0);
为新帖子解析id
,您唯一需要做的就是:postIdGenerator.incrementAndGet()
。