目录
1、Iterator
1.1、iterator原理![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6a3e532c5c3acfb190a9eeab4c1b4a9c.png)
首先,当集合获取到迭代器也就是执行coll.iterator()之后,获得的iterator对象是指向集合之外的空白的地方,
iterator.hasNext()判断当前位置下一个是否含有元素,返回类型是Boolean类型,
iterator.next()将iterator迭代器对象指针向下移动一次,并返回移动后指向的指针,需要注意的是,迭代都是在原有的集合上进行,并不会改变或者复制
1.2、说明
coll.iterator()每次都会返回新的迭代器,都指向第一个元素之前空出的地方
while(coll.iterator().hasNext()){
System.out.println(coll.iterator().next());
}
这个就是是一个死循环,并且一直输出同一个元素
2、Iterator遍历list、set、map
迭代器也就是将集合的数据放到一个容器中并排成一排,iterator有一个游标,最初的时候,游标在第一个元素前面,调用Iterator.next()是将游标往后移一位,Iterator.hasNext()是判断游标后面还没有可以迭代的元素。
2.1、遍历List
1 List<String> list = new ArrayList<String>();
2 list.add("a");
3 list.add("b");
4 Iterator<String> iterator = list.iterator();
5 while(iterator.hasNext()){
6 String next = iterator.next();
7 System.out.println(next);
8 }
2.2、遍历Set
1 Set<String> set = new HashSet<String>();
2 set.add("c");
3 set.add("d");
4 Iterator<String> iteratorSet = set.iterator();
5 while (iteratorSet.hasNext()){
6 String next = iteratorSet.next();
7 System.out.println(next);
8 }
2.3、遍历Map
Map是存放键值对的,与集合不一样,集合只能存放单一元素,所以我们先得将Map看成一个单一元素,放到Set集合中去,而JDk中Map有一个方法entrySet()就是将Map放到一个Set集合中去。
1 Map<Integer,String> map = new HashMap<Integer, String>();
2 Set<Map.Entry<Integer, String>> entries = map.entrySet();
3 Iterator<Map.Entry<Integer, String>> iteratorMap = entries.iterator();
4 while (iteratorMap.hasNext()){
5 Map.Entry<Integer, String> next = iteratorMap.next();
6 System.out.println(next);
7 }