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
相关文章
- 29.2 Iterator 迭代器ConcurrentModificationException:并发修改异常处理
- 集合框架之——迭代器并发修改异常ConcurrentModificationException
- (2.1.8)Java之集合类:set、list、hashmap、hashtable等和迭代器iterator
- 黑马程序员---集合体系的继承关系图。顶层接口Collection中的方法,迭代器Iterator使用和原理,List派系特点
- java集合(1):集合框架体系之Collection接口及迭代器Iterator接口
- 黑马程序员---集合体系的继承关系图。顶层接口Collection中的方法,迭代器Iterator使用和原理,List派系特点
- Java集合框架迭代器Iterator实现原理解析
- 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合
- java集合迭代器Iterator中的remove陷阱
- Java集合框架中迭代器Iterator解析