我使用 Stack 和 StringBuilder 类编写了用于字符串反转的代码。我注意到这段代码中的 'foreach' 循环会生成 java.util.ConcurrentModificationException,但通常的 'for' 循环不会。所以为什么?
public static String reverse(String str)
{
Stack<Character> stack = new Stack<>();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++)
stack.push(str.toCharArray()[i]);
}
for (Character c: stack) // generates an exception
{
sb.append(stack.pop());
}
return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)
我期望一个反转的字符串,但发生了 ConcurrentModificationException。
java ×1