为什么在代码的指定位置出现ConcurrentModificationException?我无法弄清楚自己在做什么错…
removeMin()
正在使用该方法在列表中找到分钟pq
,将其删除并返回其值
import java.util.Iterator;
import java.util.LinkedList;
public class test1 {
static LinkedList<Integer> list = new LinkedList<Integer>();
public static void main(String[] args) {
list.add(10);
list.add(4);
list.add(12);
list.add(3);
list.add(7);
System.out.println(removeMin());
}
public static Integer removeMin() {
LinkedList<Integer> pq = new LinkedList<Integer>();
Iterator<Integer> itPQ = pq.iterator();
// Put contents of list into pq
for (int i = 0; i < list.size(); i++) {
pq.add(list.removeFirst());
}
int min = Integer.MAX_VALUE;
int pos = 0;
int remPos = 0;
while (itPQ.hasNext()) {
Integer element = itPQ.next(); // I get ConcurrentModificationException here
if (element < min) {
min = element;
remPos = pos;
}
pos++;
}
pq.remove(remPos);
return remPos;
}
}
一旦修改了从其获得的Collection,则不应认为Iterator可用。(对于java.util.concurrent。*集合类,放宽了此限制。)
您首先要获得一个Iterator pq
,然后进行修改pq
。修改之后pq
,Iterator
itPQ
不再有效,因此当您尝试使用它时,您会收到ConcurrentModificationException。
一种解决方案是Iterator<Integer> itPQ = pq.iterator();
在while
循环之前向右移动。更好的方法是完全不使用Iterator:
for (Integer element : pq) {
从技术上讲,for-each循环在内部使用Iterator,因此无论哪种方式,此循环仅在您不尝试pq
在循环内进行修改时才有效。
问题内容: 我在代码的第34行上不断收到LineUnavailableException:https://www.refheap.com/21223 错误显示为。 我正在创建Sound类的多个实例(在我的refheap粘贴中实现)。似乎最初的实例没有问题。但是,当我开始使用相同的音频文件制作Sound对象的新实例时,便开始出现此错误。 知道如何解决吗? EIDT:我认为这个问题的 想法可能是我需要
问题内容: 我的第一段代码是我的项目对象文件;第二个是主班。在运行代码没有任何问题之前,但是在添加读写文件之后,我的代码开始收到堆栈流错误。只是正在调用错误的代码段。 我的主班: 如何找到导致堆栈溢出的地方? 问题答案: 创建: 并创造 因此,在初始化时,您将不断创建这些对象 有一个类似的Baeldung示例,用于获取StackOverflowError 由于ClassOne的构造函数实例化了Cl
问题内容: 我正在使用Java编写的Cocos2D在Android中制作2D游戏。这是我的主要代码: 如您所见,此函数看起来很好,canExecuteMovement中的矩形也很好,但是在此行中: 我收到一个InvocationTargetException。这是logcat: 可能是什么问题呢?Guy中的getBounds()类是这样的: 问题答案: 只是动态调用中引发的异常的包装。真正的问题是
问题内容: 我在服务器上运行批处理作业时遇到问题,而在开发工作站上的Eclipse上运行良好。 我已经使用Roo设置了Spring环境,创建了一个实体,并进行了一些工作,并在我的develompent盒上对其进行了良好的测试。我初始化上下文并完成工作,但是当我在服务器上运行批处理时,上下文未正确初始化。这是代码: 这是日志和异常: 关于发生了什么任何想法或提示吗?我的类路径设置为$ PROJECT
问题内容: 我在android虚拟机中使用以下代码 我收到HttpHostConnectException。不知道为什么?我已将网址中的地址从127.0.0.1更改为10.0.2.2,但仍然收到该异常。我的电脑中安装了wamp服务器,文件“ ReadingFromServer.php”位于“ www”文件夹中。 这是完整的堆栈跟踪 谢谢。 问题答案: 您是否在AndroidManifest.xml
问题内容: 在下面获得了以下生产代码,我正在将其用于新驱动程序。portName是COM4,并且该端口存在于PC上(并且我可以通过超级终端连接到该端口),那么Javacomm为什么会抛出NoSuchPortException?COM4在设备mgr中显示正常。太 问题答案: 尝试使用枚举系统上可用端口的列表,并打印列出的内容。您确定在正确的文件夹中安装了jarfiles和dll吗?如果是,则尝试使用