码上敲享录 > java常见报错解答 > Iterator的hasNext()条件成立,但next()却为空值

Iterator的hasNext()条件成立,但next()却为空值

上一章章节目录下一章 2017-12-03已有7647人阅读 评论(0)

Iterator的hasNext()条件成立,但next()却为空值

问题描述:

使用Iterator循环Set类型的数据时,有时hasNext()条件成立,但next()却为空值。假如auths集合数据类型为Set,集合里只有一个Authority对象,下面代码就出现空指针异常。

 Iterator<Authority> auth= auths.iterator();//假如只有一个元素

 if(auth.hasNext()){

  boolean a=auth.hasNext();//此时a为true

  Authority authority1 =auth.next();//此时authority1为Authority对象

  boolean b=auth.hasNext();//此时b为false,a为true

  Authority authority2 =auth.next();//此时代码报错,执行中止

}

解决方法:


hasNext():判断当前元素是否存在,并没有指向下一个元素,直到执行next()后hasNext()才去判断是否存在下一个元素。

next():返回当前元素,并指向下一个元素,如果时不存在下一个元素,就会报空指针异常。

总结:一个hasNext()一般对应一个next()。

本文地址:http://www.yayihouse.com/yayishuwu/chapter/1050



向大家推荐《Activiti工作流实战教程》:https://xiaozhuanlan.com/activiti
0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交