Я столкнулся с причудливой проблемой. В приведенном ниже фрагменте кода 2-й цикл цикла прерывается после одной итерации, когда я вызываю userRoles.removeRole (strRole). В списке есть 2 элемента. Первый цикл цикла выполняется дважды. Но второй выполняется только один раз. Указанный вызов метода возвращает логическое значение. Может кто-нибудь, пожалуйста, помогите мне, что случилось в моем коде?Java: для цикла прерывается перед всеми итерациями из-за вызова метода
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;
}
Просьба указать, что делает метод removeRole (str). – Abdulgood89
Почему это должно быть странно? Вы удаляете элемент из списка, который вы перечисляете. 2 - 1 = 1. 'getRoles', очевидно, возвращает ссылку на тот же список' removeRole' сокращается. –
@MargaretBloom да, вы правы ... Я не заметил его правильно ... Я думал, что это новый объект, который не относится к списку объекта, из которого удаляется элемент. Спасибо за ваш ответ. – NPException