迭代java程序中的对象

时间:2015-08-11 14:23:15

标签: iterator

请注意记录器信息消息和Longs的值。 .getId()返回Long值。 procDefIdIn定义为:

private static Long procDefIdIn = null;

procDefIdIn传递给此类,值为131。 最后一行日志信息是如何发生的? 我也尝试使用toString()将它们转换为Strings。结果相同。

private static void getDefinitions(List<DefinitionProcess> processes)
{
    Long procDefId = null;
    for (Iterator<DefinitionProcess> iterator = processes.iterator(); iterator.hasNext(); ) {
        DefinitionProcess proc = iterator.next();
        if(procDefIdIn != null){
            procDefId = procDefIdIn;

            logger.info(String.format("proc  = #%d procDefIdIn = #%d", proc.getId(), procDefIdIn));

            if(procDefIdIn != proc.getId()){ // How does 131 && 131 get past this?

                logger.info(String.format("Removed proc = #%d", proc.getId()));

                iterator.remove();

                continue;
            }
        }
        else{
            procDefId = proc.getId();
        }

          ........
          //Code here does not execute
         .......

    }
}

INFO - proc =#129 procDefIdIn =#131

INFO - 删除了proc =#129

INFO - proc =#130 procDefIdIn =#131

INFO - 删除了proc =#130

INFO - proc =#131 procDefIdIn =#131

INFO - 删除了proc =#131 //?!?!

1 个答案:

答案 0 :(得分:3)

请使用

if(!procDefIdIn.equals(proc.getId())){