遍历集合元素
Iterator接口
Iterator:迭代器接口,它本身不是容器
- 集合对象每次调用iterator()方法都得到一个全新的迭代器对象,默认游标都在集合的第一个元素之前
内部方法
-
hasNext()
判断是否还有下一个元素
-
next()
- 指针下移
- 将下移以后集合位置上的元素返回
- 类似指针操作,最开始指向集合第一个元素前的那个空元素,调用一次此方法指针下移一次
-
remove()
在遍历的时候删除集合中的元素
- 此方法不同于集合直接调用remove()
- 如果还未调用next()或在上一次调用next()方法之后已经调用remove方法,再调用remove()方法都会报IllegalStateException错误
Collection coll = new ArrayList();
coll.add("Tom");
coll.add("Jack");
coll.add("Ann");
Iterator iterator = coll.iterator();
while(iterator.hasNext()){
Object next = iterator.next();
if(next.equals("Tom")){
iterator.remove();
}
}
遍历集合
利用到Iterator中的hasNext()方法和next()方法
public void test7(){
Collection coll = new ArrayList();
coll.add("Tom");
coll.add("Jack");
coll.add("Ann");
Iterator iterator = coll.iterator();
while(iterator.hasNext()){
Object next = iterator.next();
if(next.equals("Tom")){
iterator.remove();
}
}
//需要一个全新的迭代器对象
Iterator iterator1 = coll.iterator();
while (iterator1.hasNext()){
System.out.println(iterator1.next());
}
}
运行结果
foreach循环
foreach循环迭代访问Collection和数组
格式
for(集合/数组中元素的类型 局部变量 :集合/数组对象){
}
举例
for(Object obj : coll){
System.out.println(obj);
}
过程
- 取coll中第n个元素赋给obj,之后打印obj
- 内部仍然调用了迭代器