我面临一个奇怪的问题。在下面的代码片段中,当我调用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/

10-11 22:55
查看更多