Iterator的使用
迭代器(Iterator)遍历List、Set、Map
一:遍历
迭代器也就是将集合的数据放到一个容器中并排成一排,iterator有一个游标,最初的时候,游标在第一个元素前面,调用Iterator.next()是将游标往后移一位,Iterator.hasNext()是判断游标后面还没有可以迭代的元素。
为什么用迭代器了?
是因为最初的时候你用for循环遍历List,之后人家又要你遍历Set,但是for循环无法遍历Set,因为Set是无序的,所以后面就统一用迭代器遍历集合了。
其实Lterator是我们Collection的方法,只适合我们的List集合和Set集合, Map集合是不适合的,但是我们把Map集合放在了Set集合里面就可以用了
只有实现的collection集合才有iterator方法,比如List和se接口;而Map接口不能使用iterator方法,需要现获取set视图,即Set set = map.keySet();
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("e"); 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集合中去。
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 }