各个集合迭代器的选择: list和数组使用随机访问方式进行迭代(for循环方法) Set和Queue迭代器迭代(for-each方式) Map使用(entry视图或key视图)
package com.gongxy.demo; import java.util.*; /** * 迭代器(遍历) * 一、可迭代标接口(java.lang.Iterable) * Iterator<T> iterator()//返回一个迭代器 * 实现此接口的类表示可以没迭代的 * 二、三种迭代器 * 1)老的迭代器:java.util.Enumeration * hasMoreElements()//是都还有元素 * nextElement()//下一个元素 * 2)新的迭代器:java.util.Iterator * hasNext()//是都还有元素 * E next()//下一个元素 * void remove()//删除刚获取的元素 * 3)针对List的迭代器:java.util.ListIterator * //正向遍历 * boolean hasNext()//是都还有元素 * E next() //下一个元素 * int nextIndex()//下一个下标 * //逆向遍历 * */ public class IterableTest { public static void main(String[] args) { listIteratorTest(); } /** * HashSet 不保证迭代顺序 */ static void iteratorTest(){ Set<String> set = new HashSet<String>(); set.add("a"); set.add("z"); set.add("c"); set.add("g"); Iterator<String> iterator = set.iterator(); while(iterator.hasNext()){ System.out.println(iterator.next()); /* a c g z */ } for (String item: set) { System.out.println(item); } } /** * list常用遍历方式为数组遍历方式,不是使用迭代器,通过下标访问更高效 */ static void listIteratorTest(){ List<String> list = new ArrayList<String>(); list.add("a"); list.add("c"); list.add("e"); list.add("b"); list.add("g"); //数组方式遍历 for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } ListIterator<String> listIterator = list.listIterator(); //正向 while(listIterator.hasNext()){ System.out.println(listIterator.next()); } //反向 while(listIterator.hasPrevious()){ System.out.println(listIterator.previous()); } for (String item: list) { System.out.println(item); } } }