Java:由于方法调用,for 循环在所有迭代之前中断

标签 java for-loop method-call

我遇到了一个奇怪的问题。在下面的代码片段中,当我调用 userRoles.removeRole(strRole) 时,第二个 for 循环在一次迭代后中断。列表中有 2 个元素。第一个 for 循环执行了两次。但第二个只执行一次。上述方法调用返回 boolean 值。谁能帮我看看我的代码有什么问题吗?

        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:由于方法调用,for 循环在所有迭代之前中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42391505/

相关文章:

java - 可以使用 lambda 表达作为 Function 的枚举的实现吗?

java - 如何关闭 YIntervalRenderer 中的形状?

java - 一些安卓手机在设置中没有打开 “About device” 页面?

java - 编译后的程序在第一个 "for"循环处停止

c - 'for'循环后分号的作用

java - 如何修复 'Codility FrogJump' 算法?

java - 从 HashMap 中删除所有值但保留键?

java - 如何在java swing中使用进度条,当该功能在繁重的进程中工作时

java - Selenium FindBy Amazon 搜索给出错误。 (java.lang.NullPointerException)

java - "super"在继承方法中引用哪个类?