我面临一个奇怪的问题。在下面的代码片段中,当我调用userRoles.removeRole(strRole)时,第二个for循环在一次迭代后中断。列表中有2个元素。第一个for循环执行两次。但是第二个只执行一次。所述方法调用返回布尔值。谁能帮助我,我的代码有什么问题?
if(userRoles != null)
{
List<String> roles = userRoles.getRoles();
String strUserName = userRoles.getUserName();
for(String strRole: roles)
{
System.out.println("role : " + strRole);
}
//for(String strRole: roles)
for(int count = 0; count < roles.size() ; count++)
{
String strRole = roles.get(count);
System.out.println("role before check: " + strRole);
if(ur.hasRoleForUser(strRole, strUserName))
{
System.out.println("role after check: " + strRole);
userRoles.removeRole(strRole);
}
}
System.out.println("role length: " + userRoles.getRoles().size());
if(userRoles.getRoles().size() > 0)
{
ur.addUserRoles(userRoles);
}
blnSuccess = true;
}
最佳答案
循环中断是因为您删除了要遍历的列表的一个元素(删除后,列表的大小为1,所以count
在循环中,您应该首先收集要在循环后删除的元素
关于java - Java:由于方法调用,for循环在所有迭代之前中断,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42391505/