正在替换奇怪的java迭代器项

正在替换奇怪的java迭代器项,java,object,iterator,Java,Object,Iterator,因此,在我的代码中,我得到一个组件列表,迭代组件,在每个组件中,我得到组件的维护并迭代它们。问题是,项目正在被替换,而不是重新创建,如我所愿: List<ComponentRelation> componentRelations = getComponentRelations(); List<MaintenanceRequired> allMaintenancesRequired = new ArrayList<MaintenanceRequired>();

因此,在我的代码中,我得到一个组件列表,迭代组件,在每个组件中,我得到组件的维护并迭代它们。问题是,项目正在被替换,而不是重新创建,如我所愿:

List<ComponentRelation> componentRelations = getComponentRelations();

List<MaintenanceRequired> allMaintenancesRequired = new ArrayList<MaintenanceRequired>();

for (Iterator<ComponentRelation> iterator = componentRelations.iterator(); iterator.hasNext();) {
    ComponentRelation componentRelation = iterator.next();
    System.out.println("Getting maintenances from "+componentRelation.getComponent().getName()+" at position "+ComponentInstallationPosition.getPositionString(componentRelation.getInstallationPosition()));
    for (Iterator<MaintenanceRequired> iterator2 = maintenancesDAO.getRequiredMaintenancesByComponentRelation(componentRelation).iterator(); iterator2.hasNext();) {
        MaintenanceRequired maintenanceRequired = (MaintenanceRequired) iterator2.next();
        maintenanceRequired.setMaintenancePerformedOnComponent(omponentRelation);
            allMaintenancesRequired.add(maintenanceRequired);
    }
}
所以报纸上说:

"getting maintenances from X-1, position 1"
"SETTING 1"
"SETTING 1"
"SETTING 1"
"SETTING 1"
"SETTING 1"
"getting maintenances from X-2, position 2"
"SETTING 1 to 2"
"SETTING 1 to 2"
"SETTING 1 to 2"
"SETTING 1 to 2"
"SETTING 1 to 2"
那么,如果是另一个对象,他为什么要将1设置为2

正如约翰所要求的,我做什么:

create empty list of items Y;

get list of items X;

iterator of list of items X {
    get from database all Y inside X and iterate{
        set iterated Y that he has a position K;
        put iterated Y inside created initially empty list of Y; // first line
    }
}
仔细看看:

System.out.println("SETTING "+ComponentInstallationPosition.getPositionString(this.maintenancePerformedOnComponent.getInstallationPosition())+" to "+ComponentInstallationPosition.getPositionString(maintenancePerformedOnComponent.getInstallationPosition()));

您引用的不是本地maintenancePerformedOnComponent,而是这个。maintenancePerformedOnComponent

静态类变量?如果您能拿出一个简短但完整的示例来演示这个问题,将更容易帮助您—理想情况下,这个示例没有这么冗长且明确的特定于业务的名称。不是吗静止的现在添加更简单的示例添加了我正在做的简要说明,有人知道为什么会发生这种情况吗?@VitorMendes不幸的是,您的简单示例没有多大帮助;编辑问题以使用类名和变量名将使其更易于通读,就像使用类名和变量名一样。也就是说,我认为@turbo是正确的;如果this.maintenancePerformedOnComponent是静态的,您看到的行为就会发生。是的,正如所解释的,它位于对象setter内部。谢谢你的回复,还有其他想法吗?
System.out.println("SETTING "+ComponentInstallationPosition.getPositionString(this.maintenancePerformedOnComponent.getInstallationPosition())+" to "+ComponentInstallationPosition.getPositionString(maintenancePerformedOnComponent.getInstallationPosition()));