1.遍历Collection的两种方式:
- 1集合元素的遍历操作,使用迭代器Iterator接口
- 2.foreach循环//for(集合元素的类型 局部变量 : 集合对象)
内部仍然调用了迭代器。
2.java.utils包下定义的迭代器接口:Iterator
2.1说明:
- 1.内部的方法:hasNext() 和 next()
- 2.集合对象每次调用iterator()方法都得到一个全新的迭代器对象,默认游标都在集合的第一个元素之前。
- 3.内部定义了remove(),可以在遍历的时候,删除集合中的元素。此方法不同于集合直接调用remove()
2.2作用:集合元素的遍历
2.3如何获取实例:
Collection coll = new ArrayList();
coll.add(123);
coll.add(456);
coll.add(new Person("Jerry", 20));
coll.add(new String("Tom"));
coll.add(false);
Iterator iterator = coll.iterator();
//hasNext():判断是否还有下一个元素
while (iterator.hasNext()) {
//next():①指针下移 ②将下移以后集合位置上的元素返回
System.out.println(iterator.next());
}
2.4常用方法:
//测试Iterator中的remove()
//如果还未调用next()或在上一次调用 next 方法之后已经调用了 remove 方法,
// 再调用remove都会报IllegalStateException。
2.5举例:
2.6图示说明:
2.6.remove()的使用
Collection coll = new ArrayList();
coll.add(123);
coll.add(456);
coll.add(new Person("Jerry", 20));
coll.add(new String("Tom"));
coll.add(false);
Iterator iterator = coll.iterator();
//删除集合中"Tom"
while (iterator.hasNext()) {
Object obj = iterator.next();
if ("Tom".equals(obj)) {
coll.remove(obj);
}
}
//遍历集合
iterator = coll.iterator();//经过上述操作,指针指向最末端,所以要再次调用iterator()方法
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
3.增强for循环:(foreach循环)
1.遍历集合举例:
public void test1(){
Collection coll = new ArrayList();
coll.add(123);//自动装箱
coll.add("AA");
coll.add(false);//其实存的是Boolean型
coll.add(new Person("Tom", 12));
coll.add(new Person("Tom", 12));
coll.add(123);
coll.add(new String("CC"));
//for(集合元素的类型 局部变量 : 集合对象)
//内部仍然调用了迭代器。
for(Object obj : coll){
System.out.println(obj);
}
}
2.遍历数组举例:
public void test2(){
int[] arr = {1,2,3,4,5,6,7};
//for(数组元素的类型 局部变量 : 数组对象)
for(int i : arr){
System.out.println(i);
}
}