迭代器(Iterator)遍历List、Set、Map

大晚上的睡不着觉,还是起来写博客吧。迭代器我主要是用来遍历List、Set、Map的,然而好久没用过,又突然忘记了,所以有写了一遍(妈的,我还就不信了,我写10遍看能不能忘记)。

迭代器也就是将集合的数据放到一个容器中并排成一排,iterator有一个游标,最初的时候,游标在第一个元素前面,调用Iterator.next()是将游标往后移一位,Iterator.hasNext()是判断游标后面还没有可以迭代的元素。

为什么用迭代器了,在《java编辑思想》这本书里说,是因为最初的时候你用for循环遍历List,之后人家又要你遍历Set,但是for循环无法遍历Set,因为Set是无序的,所以后面就统一用迭代器遍历集合了。

遍历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         }    

 

遍历Set,和List一样

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         }

 

 

遍历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         }

遇到写过忘记的代码,我他妈的写10遍,我看还能忘嘛。PS:《java编辑思想》这本书真好。

 

posted @ 2017-05-10 01:22  hugo_s  阅读(44081)  评论(3编辑  收藏  举报