List使用Iterator遍历的坑

    技术2023-12-20  99

     

    写法一: Iterator<QcSampleDTO> it = qclist.iterator(); //排除尾箱容器 while (it.hasNext()) { if(it.next().getContainerId().equals(tailDTO.getContainerId()) && it.next().getLotId().equals(tailDTO.getLotId())) { it.remove(); } } 出现了两次 it.next() ,如果list集合长度为2,就不会第二次进入遍历。 写法二: QcSampleDTO tailDTO = tailList.get(0); Iterator<QcSampleDTO> it = qclist.iterator(); //排除尾箱容器 while (it.hasNext()) { QcSampleDTO sampleDTO = it.next(); if (sampleDTO.getContainerId().equals(tailDTO.getContainerId()) && sampleDTO.getLotId().equals(tailDTO.getLotId())) { it.remove(); } }

    写法一是个坑,it.next()使用一次,下标加一,写法二正确。

    Processed: 0.020, SQL: 9