如何使用列表在特定列中插入值

时间:2015-01-12 08:01:31

标签: java list add

包含3列的表,动态增加行的大小并在所选行的特定列中插入值。

我能够增加行大小并使用列表插入特定列,但先前输入的列值消失,新的列值显示在正确的位置。

注意:未使用数据库所有值都存储在List中。

List<Checkpointclass> addchk = List<Checkpointclass>)request.getServletContext().getAttribute("stageattr");

for(Checkpointclass add:addchk)
{
  System.out.println(stage + "&" + add.getStage());
  if(add.getStage().equals(stage)){
    add.setCheckpoint(checkpoint);//3 columns
    add.setStage(stage);//row
    add.setRunway(runway);//id of those 3 columns
  }
}  
request.getRequestDispatcher( "GEFP.jsp" ).forward(request,response);

2 个答案:

答案 0 :(得分:0)

您没有插入新元素。您正在修改现有的。

如果您希望在列表中添加新元素,首先应找到要添加元素的索引,然后创建一个新元素并添加它:

        for(int i=0; i<addchk.length; i++)
        {
            Checkpointclass add = addchk.get(i);
            System.out.println(stage + "&" + add.getStage());
            if(add.getStage().equals(stage)){
                break;
            }
        }
        Checkpointclass newadd = new Checkpointclass ();
        newadd.setCheckpoint(checkpoint);//3 columns
        newadd.setStage(stage);//row
        newadd.setRunway(runway);//id of those 3 columns  
        addchk.add(i,newadd);        

答案 1 :(得分:0)

我不明白你阻止的地方:

Checkpointclass cp = new Checkpointclass();
cp.setCheckPoint("...");
cp.setStage("...");
cp.setRunway("...");
addchk.add(cp);

在迭代add时不要执行addchck,您只能获得ConcurrentModificationException。为此,您需要新的列表副本或临时添加新项目。