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