私は奇妙な問題に直面しています。以下のコードでは、userRoles.removeRole(strRole)を呼び出しているとき、2回目のforループが1回の反復処理後に中断しています。リストには2つの要素があります。最初のforループは2回実行されます。しかし、2回目は1回だけ実行されます。このメソッド呼び出しはbooleanを返します。誰も私のコードで何が間違っているのを助けてくれますか?Java: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;
}
removeRole(str)メソッドが行っていることを示してください。 – Abdulgood89
なぜそれは奇妙なはずですか?列挙しているリストからアイテムを削除しています。 2 - 1 = 1. 'getRoles'は明らかに同じリストへの参照を返します。' removeRole'が短縮されます。 –
@MargaretBloomはいあなたは正しいです...私はそれを正しく認識しませんでした...私はそれがアイテムが削除されているオブジェクトのリストを参照していない新しいオブジェクトと思った。ご返信ありがとうございます。 – NPException