Java List remove 方法使用避坑

本文通过一个实例展示了在使用Java List的remove方法时可能遇到的问题。当尝试删除List中特定条件的元素(如type属性为“empty”的Dog),由于删除操作导致List长度变化,直接遍历可能会错过某些元素。解决办法是从大到小遍历List,确保删除不会影响后续元素的索引。
摘要由CSDN通过智能技术生成

来看这段代码,我们想要移除List中type属性为“empty”的Dog。

package com.suns;

import java.util.ArrayList;
import java.util.List;

public class Main {

    public static void main(String[] args) {

        Dog dog0 = new Dog("big");
        Dog dog1 = new Dog("empty");
        Dog dog2 = new Dog("empty");
        List<Dog> dogs = new ArrayList<>();
        dogs.add(dog0);
        dogs.add(dog1);
        dogs.add(dog2);

        System.out.println("操作前List的长度:" + dogs.size());
        for (Dog dog : dogs) {
            System.out.println(dog);
        }


        for (int i = 0; i <dogs.size(); i++) {
            if (dogs.get(i).getType().equals("empty")) {
                dogs.remove(i);
            }
        }


        System.out.println("\n操作后List的长度:" + dogs.size());
        for (Dog dog : dogs) {
            System.out.println(dog);
        }

    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值