说有一个清单.列表中的每个项目都有唯一的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,但我想我正在寻找一种通用算法.
我有一个表有一个描述数字ID的列,这对所有行都是唯一的(但它不是主键).数字ID是有限的(假设答案可以从1到10)
SELECT ID FROM TABLE;
ID
---
1
2
5
Run Code Online (Sandbox Code Playgroud)
我必须向用户(通过UI)呈现未使用的值,以便为新输入选择正确的值.我知道如何在代码上执行它(它是Grails Web应用程序),只需从数据库中获取所有ID并生成一个列表,其中包含不存在的ID.但我想知道是否有办法直接在SQL查询上执行此操作.
所以,该查询应该返回
ID
---
3
4
6
7
8
9
10
Run Code Online (Sandbox Code Playgroud)
数据库是Oracle,但也许有一种方法可以在其他数据库上工作.