java.util接口 Iterator
当遍历集合时,首先通过调用Collection集合的iterator()方法获得迭代器对象,然后使用hashNext()方法判断集合中是否存在下一个元素,如果存在,则调用next()方法将元素取出,否则说明已到达了集合末尾,停止遍历元素。
接口内部实现方法
Boolean hasNext();//判断是否有下一个元素,如果仍有元素可以迭代,则返回 true。
E next();//获取元素 返回迭代的下一个元素。
void remove();//删除元素,获取的是谁,删除的就是谁 从迭代器指向的集合中移除迭代器返回的最后一个元素(可选操作)。
实现原理:
迭代器的实现原理(主要操作):
hasNext():
cursor!=size;//游标和元素个数进行比较,不相同就认为有下一个元素。
next():
数组名[cursor++];//获得游标位置的元素,然后游标加一。
通过迭代器遍历集合的过程不能通过集合对象进行增、删操作。但可以使用迭代器的删除方法删除元素。
public static void main(String[] args) {
//新建一个集合并添加元素
Collection c = new ArrayList();
c.add("one");
c.add("#");
c.add("two");
c.add("#");
c.add("three");
c.add("#");
c.add("four");
c.add("#");
c.add("five");
System.out.println(c);//[one, #, two, #, three, #, four, #, five]
Iterator it = c.iterator();
while(it.hasNext()){
String str = (String)it.next();
System.out.println(str);
if("#".equals(str)){
//迭代器要求在遍历的过程中不能通过集合的方法增删元素否则会抛出异常!
// c.remove(str); //报异常,不能使用集合匹配元素删除
//迭代器提供的remove可以删除迭代器当前位置表示的集合元素
it.remove();
}
}
System.out.println(c);//[one, two, three, four, five]
使用迭代器遍历map
//map集合遍历,省略map的声明和数据添加
Set set = map.entrySet(); // 通过entrySet()方法转变成set集合
Iterator i = set.iterator(); //通过集合获取迭代器对象
while(i.hasNext()){ //判断是否
Map.Entry<String, String> entry1=(Map.Entry<String, String>)i.next(); //next()获取下一个对象
System.out.println(entry1.getKey()+"=="+entry1.getValue()); //输出元素内容
}