列表中遗留了一个空对象

One null object is left from list

        List<String> mylist = new ArrayList<>(List.of("james","bond"));
        mylist.add(null);
        mylist.add(null);
        mylist.add(null);
        for(int i =0; i < mylist.size(); i++) {
            if(mylist.get(i) == null) {
                mylist.remove(i);
            }
        }
        mylist.forEach(System.out::println);

为什么遗留了一个空对象? 因此 mylist 大小为 5(2 个字符串 + 3 个空对象)变为 3(2 个字符串 + 1 个空对象)而不是 2(仅 2 个字符串)

为什么?

发生这种情况的原因是当您删除一个 null 时,列表的大小会减少,所以在某个时候最后一个 null 成为第三个对象,因此它不会被检查 我修改你的代码如下

List<String> mylist = new ArrayList<>(List.of("james","bond"));
mylist.add(null);
mylist.add(null);
mylist.add(null);
System.out.println(mylist.size());
for(int i =0; i < mylist.size(); i++) {
    if(mylist.get(i) == null) {
        mylist.remove(i);
        i--;
    }
}
mylist.forEach(System.out::println);

查看 i-- 它可以帮助您的计数器不增加