查找列表中最低的未使用唯一ID

Bra*_*rad 9 algorithm list

说有一个清单.列表中的每个项目都有唯一的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).然而,这将需要另一个列表.