列表java不在循环上工作
我有一个项目列表,在一个列表java不在循环上工作,java,oop,for-loop,Java,Oop,For Loop,我有一个项目列表,在一个for循环中我试图比较这个列表,但该列表使BoundsException的数组 在for循环外列表有4个项目(0,1,2,3),但在for中只有3个项目(0,1,2),当我尝试访问最后一个项目时,会引发异常 List<Relatorio> relatorios = new RelatorioDao().listaTudoEmpresa(userWeb.logado); for(int i = 0; i < relatorios.size(
for循环中
我试图比较这个列表,但该列表使BoundsException的数组
在for循环外
列表有4个项目(0,1,2,3),但在for中只有3个项目(0,1,2),当我尝试访问最后一个项目时,会引发异常
List<Relatorio> relatorios = new RelatorioDao().listaTudoEmpresa(userWeb.logado);
for(int i = 0; i < relatorios.size(); i++){
if(!contem(relatorios.get(i))){
relatorios.remove(i);
}
}
List relatorios=new RelatorioDao().listaTudoEmpresa(userWeb.logado);
对于(int i=0;i
这是因为当删除元素时,列表的大小会变小,从而缩短循环
如果要在迭代过程中删除元素,请使用专用列表迭代器,此操作是安全的:
Iterator<Relatorio> it = relatorios.iterator();
while (it.hasNext())
if (...) {
it.remove();
}
}
Iterator it=relatorios.Iterator();
while(it.hasNext())
如果(…){
it.remove();
}
}
这是因为当删除元素时,列表的大小会变小,从而缩短循环
如果要在迭代过程中删除元素,请使用专用列表迭代器,此操作是安全的:
Iterator<Relatorio> it = relatorios.iterator();
while (it.hasNext())
if (...) {
it.remove();
}
}
Iterator it=relatorios.Iterator();
while(it.hasNext())
如果(…){
it.remove();
}
}
您不应该从非迭代器循环中删除项
考虑这样做
for( Iterator<Realtorio> iter = realtorios.iterator( ); iter.hasNext( ); )
{
Relatorio cur = iter.next( );
if(!contem(cur)){
iter.remove( );
}
}
for(Iterator iter=realtorios.Iterator();iter.hasNext();)
{
Relatorio cur=iter.next();
如果(!contem(cur)){
iter.remove();
}
}
您不应该从非迭代器循环中删除项 考虑这样做
for( Iterator<Realtorio> iter = realtorios.iterator( ); iter.hasNext( ); )
{
Relatorio cur = iter.next( );
if(!contem(cur)){
iter.remove( );
}
}
for(Iterator iter=realtorios.Iterator();iter.hasNext();)
{
Relatorio cur=iter.next();
如果(!contem(cur)){
iter.remove();
}
}
在迭代列表时,不能对列表中的项目执行删除操作。必须使用迭代器上的remove来执行此操作。
.您不能对列表中的项目执行删除操作,因为您正在对其进行迭代。必须使用迭代器上的remove来执行此操作。
.通过此处的异常堆栈跟踪!这里可能存在超过异常堆栈跟踪的重复!可能重复的