Java 添加em后的错误结果从ArrayList中删除对象
我的代码显示了一个不一致的结果。当我运行它时,if操作仅在Java 添加em后的错误结果从ArrayList中删除对象,java,object,arraylist,process,conditional,Java,Object,Arraylist,Process,Conditional,我的代码显示了一个不一致的结果。当我运行它时,if操作仅在incoming.get(I).getSubmitionTime()为奇数时执行 这是我的代码: public void decrementIncoming () { for (int i = 0; i < incoming.size(); i++) { incoming.get(i).setSubmitionTime(incoming.get(i).getSubmitionTime() - 1);
incoming.get(I).getSubmitionTime()为奇数时执行
这是我的代码:
public void decrementIncoming () {
for (int i = 0; i < incoming.size(); i++) {
incoming.get(i).setSubmitionTime(incoming.get(i).getSubmitionTime() - 1);
if (incoming.get(i).getSubmitionTime() == 0 ) {
Process p = incoming.get(i);
incoming.remove(i);
ready.add(p);
}
}
}
但他们必须同时进入状态。
我做错了什么?发生这种情况是因为当您调用incoming.remove(I)时代码>您还需要减少i
计数器。但更好的解决方案是使用迭代器:
public void decrementIncoming () {
Iterator<Process> processIterator = incoming.iterator();
while (processIterator.hasNext()) {
Process process = processIterator.next();
process.setSubmitionTime(process.getSubmitionTime() - 1);
if (process.getSubmitionTime() == 0 ) {
processIterator.remove();
ready.add(process);
}
}
}
public void decrementIncoming(){
迭代器processIterator=incoming.Iterator();
while(processIterator.hasNext()){
Process=processIterator.next();
process.setSubmitionTime(process.getSubmitionTime()-1);
如果(process.getSubmitionTime()==0){
processIterator.remove();
就绪。添加(进程);
}
}
}
这一行(令人困惑的)代码到底想要实现什么:incoming.get(i).setSubmitionTime(incoming.get(i).getSubmitionTime()-1)代码>?发布完整的code@Kon将其视为if(--incoming[i].submitionTime==0){
您的代码中是否有错误?如果是,您是否可以将其发布到此处?无论如何,您的问题完全不清楚。您假设我们对您的代码的了解比我们实际了解的要多。例如,您正在询问您的输出,但您的代码甚至没有打印语句。请发布一个。
public void decrementIncoming () {
Iterator<Process> processIterator = incoming.iterator();
while (processIterator.hasNext()) {
Process process = processIterator.next();
process.setSubmitionTime(process.getSubmitionTime() - 1);
if (process.getSubmitionTime() == 0 ) {
processIterator.remove();
ready.add(process);
}
}
}