1.使用迭代器遍历List集合
public class Test {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("贾宝玉");
list.add("林黛玉");
list.add("薛宝钗");
list.add("刘姥姥");
Iterator<String> it = list.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
2.KeySet
public class TestKeySet {
public static void main(String[] args) {
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("J",7);
map.put("A",8);
map.put("B",7);
map.put("M",9);
Set<String> set = map.keySet();
Iterator<String> it = set.iterator();
while(it.hasNext()){
String key = it.next();
System.out.println(key + "--" + map.get(key));
}
}
}
3.EntrySet
public class TestEntrySet {
public static void main(String[] args) {
HashMap<String,Integer> map = new HashMap<String,Integer>();//得到的是key-value组成的映射关系
map.put("J",7);
map.put("A",8);
map.put("B",7);
map.put("M",9);
Set<Map.Entry<String, Integer>> set = map.entrySet();
Iterator<Map.Entry<String, Integer>> it = set.iterator();
while(it.hasNext()){
Map.Entry<String, Integer> en = it.next();
System.out.println(en.getKey() + "--" + en.getValue());
}
}
}
分析:Collection接口继承Iterable接口,Iterable接口下有唯一的抽象方法Iterator<T> iterator();,所以Collection接口的子类及其所有实现类都有Iterator<T> iterator();这个抽象方法;而Iterator<T> iterator();返回的为Iterator接口类型,Iterator接口下有hasNext()和next()抽象方法;综上所述,List、Set接口的实现类可以调用Iterator()方法,然后用hasNext()方法判断是否有下一个元素,如果有下一个元素,再调用next()方法向下移动并获取元素。
例图见下文: