gpt4 book ai didi

java - 我不断收到 java.util.concurrentmodificationexception.. 如何解决这个问题?

转载 作者:行者123 更新时间:2023-11-30 11:48:35 25 4
gpt4 key购买 nike

我一直在研究这段代码。这是我想要发生的事情的伪代码:

a.检查部分(列表)大小是否为 0。
b.如果部分大小为 0,则通过调用 sections.add(newSection)
自动将学生注册到该部分c.else 如果部分大小不为零,检查是否与计划冲突
d.如果没有冲突,则通过调用 sections.add(newSection)
将学生注册到该部分e.else什么都不做

Java 一直向我抛出“java.util.concurrentmodificationexception”错误。我知道,我不应该在遍历列表时更改 ArrayList 的大小,因为它会修改迭代器。还有另一种方法可以解决这个问题吗? :D

非常感谢。非常感谢您的帮助。 :)

 public String enrollsTo(Section newSection){


StringBuffer result = new StringBuffer();

String resultNegative = "Failed to enroll in this section.";
String resultPositive = "Successfully enrolled in section: " + newSection.getSectionName() + ".";

int previousSectionSize = sections.size();

if(this.sections.isEmpty()){
this.sections.add(newSection);
result.append(resultPositive);
}else{
for(Iterator<Section> iterator = sections.iterator(); iterator.hasNext() ; ){
Section thisSection = iterator.next();

if(thisSection.conflictsDayWith(newSection)==false &&
thisSection.conflictsTimeWith(newSection)==false){
this.sections.add(newSection); //<-- i believe the problem lies here.
result.append(resultPositive);
}
}
}
// if(this.sections.size() == previousSectionSize){
// result.append(resultNegative);
// }
return result.toString();
}

最佳答案

不要在您的 for 循环中执行 sections.add(newSection),因为这是对您当前迭代的集合的修改。

此外,您不想在决定是否添加 newSection 之前检查所有部分吗?也许是这样的:

boolean conflict = false;
for (...) {
if (/* check for conflict */) {
conflict = true;
break;
}
}
if (!conflict) {
sections.add(newSection);
}

关于java - 我不断收到 java.util.concurrentmodificationexception.. 如何解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8715322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com