在java列表中找到缺少的id

时间:2014-10-30 12:32:59

标签: java jsp

我试图创建一个显示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>

任何想法?

2 个答案:

答案 0 :(得分:0)

假设我们有整数列表(已经使用过的ID),并且期望有一个免费的ID Set<Integer>

定义最大变量。

浏览现有ID列表。

如果列表中的当前ID大于max,请在old maxnew 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))