1.在集合迭代器Iterator,中多次调用.next()方法有时会报该异常。
具体(猜想):
当集合元素为偶数个时,.next()方法为偶数(大于等于2)个时不会报异常,但会跳跃式读取元素
当集合元素为偶数个时,.next()方法为奇数个(大于2)时不会报该异常。
总结:Iterator中.next()方法只能调用一次,每一次使用都会指向下一个元素,当下一个元素不存在是(边界溢出)即报该错误
附录(代码Java):
1.
m.put("0", new People("李明",19));
m.put("1", new People("张红",17));
m.put("2", new People("王梅",18));
m.put("3", new People("孙丽",19));
List<Map.Entry<String,People>> arr=new ArrayList<Map.Entry<String,People>>(m.entrySet());
Collections.sort(arr,new MyCompare());
//--------------------------------------------------------------------------------------------------
Iterator<Map.Entry<String, People>> it1=arr.iterator();
while(it1.hasNext()){
String key=it1.next().getKey();
System.out.println("名字:"+m.get(key).getName()+" \t年龄:"+m.get(key).getAge());
}
输出: 1名字:张红 年龄:17
2名字:王梅 年龄:18
3名字:孙丽 年龄:19
0名字:李明 年龄:19
//---------------------------------------------------------------------------------------------------
Iterator<Map.Entry<String, People>> it2=arr.iterator();
while(it2.hasNext()){
Entry<String, People> p=it2.next();
System.out.println(p.getKey()+"名字:"+p.getValue().getName()+" \t年龄:"+p.getValue().getAge());
}
输出: 1名字:张红 年龄:17
2名字:王梅 年龄:18
3名字:孙丽 年龄:19
0名字:李明 年龄:19
//---------------------------------------------------------------------------------------------------
Iterator<Map.Entry<String, People>> it2=arr.iterator();
while(it2.hasNext()){
System.out.println(it2.next().getKey()+"名字:"+it2.next().getValue().getName()+" \t年龄:"+it2.next().getValue().getAge());
}
输出:
1名字:王梅 年龄:19
Exception in thread "main" java.util.NoSuchElementException
//----------------------------------------------------------------------------------------------------
Iterator<Map.Entry<String, People>> it2=arr.iterator();
while(it2.hasNext()){
System.out.println("名字:"+it2.next().getValue().getName()+" \t年龄:"+it2.next().getValue().getAge());
}
输出:
名字:张红 年龄:18
名字:孙丽 年龄:19
相关文章
- Java集合-迭代器(Iterator)
- Java:使用Iterator迭代器遍历集合数据
- Java8 parallelStream与迭代器Iterator性能
- 集合(Collection)与迭代器(Iterator)
- Python进阶内容(四)--- 迭代器(Iterator)与生成器(Generator)
- java基础(18):集合、Iterator迭代器、增强for循环、泛型
- JAVA基础之集合、Iterator迭代器、泛型及增强for循环
- Java集合、Iterator迭代器和增强for循环整理
- 18_集合框架_第18天_集合、Iterator迭代器、增强for循环 、泛型_讲义
- JAVA基础——集合Iterator迭代器的实现