ConcurrentModificationException的?
我正在尝试按开始时间排序时间跨度列表(表示为具有开始时间和结束时间的Time []数组)。 我正在尝试使用以下嵌套循环来执行此操作:
for (Time[] span : workingList){ Time[] compareTo = workingList.get(0); for (Time[] inSpan : workingList){ if (inSpan[0].before(compareTo[0])){ compareTo = inSpan; } } workingList.remove(compareTo); toReturn.add(compareTo); } }
但它在for (Time[] span : workingList)
(顶部的for (Time[] span : workingList)
的行上抛出一个java.util.ConcurrentModificationException
。 我以前从未见过这个例外,有人可以向我解释它的含义和原因。
我也愿意接受更好的算法建议。
workingList.remove(compareTo);
您正在迭代它时修改集合。
你应该使用类似的东西:
ListIterator
有一些方法也没有使用列表迭代器,但这似乎更正确。
我的建议是你使用Collections.sort()
来排序列表。 它为您进行排序,并使您的可读性更具可读性。 调用方法时,您需要指定自己的Comparator
– 因此:
Collections.sort(workingList,new Comparator
这会将workingList排序为您的规格。