当前位置: 首页 > 知识库问答 >
问题:

对于ArrayList中具有空值的每个循环

范兴文
2023-03-14

考虑这个简单的例子:

List<Integer> integerArrayList = new ArrayList<>();
        integerArrayList.add(5);
        integerArrayList.add(6);
        integerArrayList.add(7);
        integerArrayList.add(null);
  

 for(int i=0;i<integerArrayList.size();i++){
         System.out.println(integerArrayList.get(i));
     }

  

此代码将打印[5,6,7,null],但是,如果我对每个循环使用,如下所示:

  for(int el : integerArrayList)
       System.out.println(el);
    

然后这个代码会抛出NullPointerException,我不明白为什么。

据我所知,上面的每个循环都相当于:

for (Iterator<Integer> i = integerArrayList.iterator(); i.hasNext();) {
            Integer item = i.next();
            System.out.println(item);
        }

但是这个循环不会抛出NullPointerException

我想知道对此的解释是什么。

提前谢谢。


共有1个答案

乌俊健
2023-03-14
匿名用户

如果您为(int el: integerArrayList)执行,或者例如int x=integerArrayList.get(k),那么您将列表中的intger拆箱到int中。虽然intger可能是null,但int必须有一个适当的int值(即使该值是0),而不是null

要修复它,只需使用Integer而不是int,即。

for(Integer el : integerArrayList)

 类似资料:
  • 问题内容: 我想在完成后从中删除对象,但找不到解决方法。尝试像下面的示例代码中那样将其删除不会起作用。如何在此循环中访问当前对象的迭代器以将其删除? 问题答案: 您不能在增强的for循环内。您必须使用“长手”方法: 当然,并非所有的迭代器都 支持 删除,但是您可以使用。 另一种方法是建立一个额外的“要删除的像素”集合,然后在列表最后调用。

  • 问题内容: 我想为每个循环做一个,但要使其同步运行。循环的每次迭代都将执行http.get调用,并返回json以将值插入数据库中。问题是for循环异步运行,这导致所有http.gets一次全部运行,并且我的数据库最终没有插入所有数据。我正在使用async- foreach尝试执行我想要的操作它可以做到,但是如果我能以正确的方式做到这一点,我就不必使用它。 和我的模特 问题答案: 我发现在完成每个调

  • 问题内容: 我需要使用一个HashMaps的ArrayList调用外部API,每个ArrayList包含几个预定义的键值对。一个例子: 现在,我需要根据“值”键的内容对该结构进行排序。这种排序将导致“ key = B键/值= A值”条目作为arrayListHashMap中的第一个条目。 非常感谢您的帮助。 J 问题答案: 您需要实现一个或更一般的方法,即只提取与键关联的值,然后使用。示例代码(对

  • 问题内容: 这是Java代码的片段: 它显示5。但是为什么声明了for循环的声明部分,却没有声明? 在uu上,您将引用2D数组…这不是一项作业。我正在准备Java认证。干杯 问题答案: 由于你是一个。因此,当您对其进行迭代时,您将首先获得,然后可以对该数组进行迭代以获取单个元素。 因此,您的外部循环具有as类型,因此具有该声明。如果您在另一个内循环中进行迭代,则将得到以下类型:-

  • 我在JPA repository类中编写了一个查询,如下所示: 上述查询的问题是,如果参数:和都为空,则需要获取所有记录,而这不会发生。到目前为止,没有获取任何记录。 基本上,我希望编写的查询能够正确地适用于所有情况,即参数和都采用空值和非空值。 在这方面,我已经了解了CriteriaBuilder的概念,但无法正确掌握该概念以实现我的案例。 有人能帮忙吗?谢谢 编辑 我已经在控制台中记录了查询,

  • 我想在spring boot中,当响应对象对于每个响应自动为null时返回404。 我需要建议。 我不想检查控制器中的对象是否为null。