列表中遗留了一个空对象
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-- 它可以帮助您的计数器不增加
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-- 它可以帮助您的计数器不增加