说有一个清单.列表中的每个项目都有唯一的ID.
List [5, 2, 4, 3, 1]
Run Code Online (Sandbox Code Playgroud)
当我从此列表中删除项目时,项目中的唯一ID随之而来.
List [5, 2, 3, 1]
Run Code Online (Sandbox Code Playgroud)
现在说我想在列表中添加另一个项目,并为其提供最低的唯一ID.
在向列表中添加新项目时,获取最低唯一ID的最简单方法是什么?
这里有限制:如果我在删除项目时没有重新分配另一个项目的唯一ID,我更喜欢它.
我意识到,如果我在删除4时将唯一ID 5重新分配给唯一ID 4,那么很容易找到唯一ID.然后我可以获得列表的长度(5)并创建具有该编号的唯一ID的新项目.
那么还有另一种方法,那就是不涉及遍历整个列表?
编辑:
语言是java,但我想我正在寻找一种通用算法.
Ava*_*all 16
一种简单快捷的方法是将已删除的ID放入优先级队列,只需在插入新的ID时从中选择下一个id(或者在队列为空时使用第一个列表的size()+ 1作为id).然而,这将需要另一个列表.