java - 使用 Iterator 从 List 中删除包含 null 的元素

标签 java collections null core

List<Integer> list = new ArrayList<>();
list.add(12);
list.add(null);
list.add(22);
list.add(32);

System.out.println(list);

Iterator<Integer> iterator = list.iterator();

while(iterator.hasNext()){
        Integer a = iterator.next();
        System.out.print(a+" ");

        if(a.equals(32)){  
        iterator.remove();
        }
    }

O/p

[12, null, 22, 32]
12 null Exception in thread "main" java.lang.NullPointerException
at javed.collection.Collecting.main(Collecting.java:57)

尝试从 List 中删除任何包含 null 的元素会导致 NullPointerException 。 但可以轻松地从 List 中删除不包含 null 的元素。 我将整数与 null 进行比较是不是做错了什么?

如果我们不能从 List 中删除包含 null 的元素,那么为什么他们允许我们在 List 中添加 null,那它有什么用呢?

最佳答案

您应该添加空检查:

if(a != null && a.equals(32)) {
    iterator.remove();
}

您还可以使用Objects.equals这会为您进行空检查:

if(Objects.equals(a, 32)) {

关于java - 使用 Iterator 从 List 中删除包含 null 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29541183/

相关文章:

java - Spring @OneToMany 问题

java - 从 Ldap 数据库(ApacheDs)获取 SHA 密码值

asp.net-mvc - ASP.NET MVC 编辑集合最佳实践 - 您的意见

java - 返回有序集

java - 根据列表值对映射进行排序

database - 如何建模或查询关系代数中不存在的东西

java - 杀死所有进程,强制一切停止

ios - Swift: fatal error :在初始化 UIlabel 值时展开可选值时意外发现 nil

java - 空字符串还是非空字符串?

java - @FeignClient 强制@GetMapping 和@RequestBody 进行POST