最近在项目中遇到了需要遍历删除的地方,最初使用的是这种方式
for (int i = 0; i < carouselIdList.size(); i++) {
//将当前门店当前轮播图id移除
if (carouselIdList.get(i).equals(carousel.getId())) {
carouselIdList.remove(i);
}
}
但是考虑到直接进行遍历删除可能会遇到指针异常的问题,所以采用了迭代器进行移除,有一点需要注意的是在移除的时候是迭代器对象进行移除,不是原集合移除
Iterator<Long> iterator = carouselIdList.iterator();
if (iterator.hasNext()) {
Long next = iterator.next();
if (next.equals(carouselId)) {
iterator.remove();
}
}
但是写到这里发现idea报黄了,这是提醒我这段代码可以优化,然后就修改成了lamda这种形式
carouselIdList.removeIf(carouseId -> carouseId.equals(carouselId));