大晚上的睡不着覺,還是起來寫博客吧。迭代器我主要是用來遍歷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編輯思想》這本書真好。