1.Iterator接口介绍
lterator对象称为迭代器(设计模式的一种),主要用于遍历 Collection 集合中的元素。
java集合分为Collection(单列集合)和Map(双列集合)两种。
2.lterator接口的方法
Boolean hasNext();判断集合是否还有下一个元素,返回true表示集合有元素,返回false表示集合中没有元素
E next();获取集合中的元素
void remover; 删除集合中的元素
3.迭代器的示例
public static void main(String[] args) {
// Collection<E>接口继承了Iterable接口
Collection<String> c = new HashSet();
c.add("aa");
c.add("bb");
c.add("cc");
c.add("dd");
// Iterable接口中有一个iterator方法,返回一个iterator对象
Iterator<String> iterator = c.iterator();
// 判断集合是否还有下一个元素
while (iterator.hasNext()) {
// 获取集合中的元素
String element = iterator.next();
System.out.println(element);
}
}
4.ArrayList对迭代器的实现原理
class ArrayList<E> {
// 成员变量
private int size;// 记录元素个数
private Object[] elementData;// 集合底层用来保存元素的数组
// 成员 内部类
private class Itr implements Iterator<E> {
// 成员内部类的成员变量
private int cursor;
public boolean hasNext() {
return cursor != size;
}
public E next() {
return (E) elementData[cursor++];
}
}
}
5迭代器删除方法
public static void main(String[] args) {
// Collection<E>接口继承了Iterable接口
Collection<String> c = new HashSet();
c.add("aa");
c.add("bb");
c.add("cc");
c.add("dd");
// Iterable接口中有一个iterator方法,返回一个iterator对象
Iterator<String> iterator = c.iterator();
while (iterator.hasNext()) {// 判断集合是否还有下一个元素
String element = iterator.next();// 获取集合中的元素
if (element.equals("cc")) {
iterator.remove();// 删除指定元素
}
System.out.println(element);
}
}
打印结果:
删除前:aa,bb,cc,dd
删除后:aa,bb,dd
void remove();//删除元素,获取的是谁,删除的就是谁
注意事项:通过迭代器遍历集合的过程中不能通过集合对象进行增、删操作。
但是可以使用迭代器的删除方法删除元素