Java 添加em后的错误结果从ArrayList中删除对象

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);

我的代码显示了一个不一致的结果。当我运行它时,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);
        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);
        }
    }
}