先写一个遍历map的例子
package test.com.myioc;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class testmap {
public static void main(String[] args){
Map<String, Integer> m = new HashMap<String, Integer>();
m.put("m", 1);
m.put("n", 2);
//遍历map集合
System.out.println("通过entryset遍历。。。");
Set<Map.Entry<String, Integer>> s = m.entrySet();
Iterator<Map.Entry<String, Integer>> i = s.iterator();
while(i.hasNext()){
Map.Entry<String, Integer> e = i.next();
System.out.print(e.getKey() + " ");
System.out.println(e.getValue());
}
//遍历map集合
System.out.println("通过key遍历。。。");
Set<String> sKey = m.keySet();
Iterator<String> iKey = sKey.iterator();
while(iKey.hasNext()){
String e = iKey.next();
System.out.print(e + " ");
System.out.println(m.get(e));
}
}
}
这种模式允许客户端按照一个线性顺序遍历所有的元素对象,把元素对象提取出来或者删除掉。
List和set都是需要实现Iterable接口
public interface Iterable<T> {
/**
* Returns an iterator over a set of elements of type T.
*
* @return an Iterator.
*/
Iterator<T> iterator();
}
而iterator也是一个接口,要求实现取元素,判断还有没有没取的元素等
public interface Iterator<E> {
boolean hasNext();
E next();
void remove();
}
虽然map没有实现Iterable接口,但是它也有提供一个entrySet,keySet等方法,来获得set集合,然后通过,set集合来获得,iterator对象。