我试图创建一个显示id的表,你可以选择要添加到数据库的对象(员工)。 选项将是最后一个+ 1和所有通过删除其对象而获得免费的“免费”ID点。
我试图创建一个包含所有缺失ID的列表,它对我有用。 我用jsp做了这个,它只显示了我顶级id的所有id。
int lastId =tableList.get(aAdmin.getAllEmps().size()-1).getId();
List <Integer> idList=new ArrayList<Integer>();
int counter=0;
itr= tableList.iterator();
int i=0;
while(itr.hasNext()){
Employee tempEmp=itr.next();
int id=tempEmp.getId();
if(id!=i+counter){
for(int j=0 ; j<id-(i+counter); i++)
idList.add(i+counter+j);
counter=counter+(id-(i+counter));
}
i++;}
Iterator<Integer> idItr=idList.iterator();
while(idItr.hasNext()) {
Integer tempInt= idItr.next();
%>
<tr>
<td>
<%=tempInt %><input type="radio" name="id" value="<%=tempInt%>">
</td>
</tr>
<%}%>
</table>
<br>
任何想法?
答案 0 :(得分:0)
假设我们有整数列表(已经使用过的ID),并且期望有一个免费的ID Set<Integer>
。
定义最大变量。
浏览现有ID列表。
如果列表中的当前ID大于max
,请在old max
和new max
之间添加所有数字,并将max
设置为新值。如果它小于max
,请将其从“设置”中删除。
答案 1 :(得分:0)
看起来我找到了最好的解决方案!
在检查之前需要调试更多的东西,但看起来答案是在sql中。 我创建了一个充满所有可能的id位置的表,并创建了一个连接,将其放入结果集并使用该结果集。 加入是 -
SELECT tempTable.ID, Employees.ID FROM Employees RIGHT JOIN tempTable on Employees.ID=tempTable.ID WHERE (((Employees.ID)Is Null))