这些是下面的代码中所涉及到的所有方法:* 迭代概述:* 集合是用来存储元素,存储的元素需要查看,那么就需要迭代(遍历)* 也就是说,迭代就是遍历* * public interface Iterator<E> 对 collection 进行迭代的迭代器* Iterator<E> iterator()返回在此 collection 的元素上进行迭代的迭代器* java.util 接口 Iterator<E>* * boolean hasNext()如果仍有元素可以迭代,则返回 true* * E next()返回迭代的下一个元素* * void remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)
package com.wsq.bean;
//创建一个自定义Student类
public class Student {private String name;private int age;public Student() {super();}public Student(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setNaem(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() { //这里得重写toString方法return "Student [naem=" + name + ", age=" + age + "]";}}
package com.wsq.collection;import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import com.wsq.bean.Student;
public class Demo5_Iterator {public static void main(String[] args) {demo1(); //迭代已经提供好的String类对象demo2(); //迭代一个自定义对象,自己创建类,然后创建对象存储集合里,然后迭代 }private static void demo2() {Collection c = new ArrayList(); //创建集合cc.add(new Student("张三",23)); //向集合c里面添加Student类对象即new Student("张三",23)c.add(new Student("李四",24)); //object obj = new Student("李四",24); 父类引用指向子类对象c.add(new Student("王五",25)); //由于多态的弊端导致obj不能调用子类特有的属性和行为c.add(new Student("赵六",26));Iterator it = c.iterator(); //获取迭代器,迭代的时候,获取到的都是Object类型while(it.hasNext()){ //boolean hasNext()如果仍有元素可以迭代,则返回 true,进行循环判断集合是否还含有元素//System.out.println(it.hasNext()); //调用它的toString方法Student s = (Student)it.next(); //向下转型,由Object类向下转型成为Student类//当把Student对象给添加进来的时候,会进行一个类型的提升Student对象变成了Object类System.out.println(s.getName() + "..." + s.getAge()); //通过s就可以调用它的getName和getAge方法}
}public static void demo1(){ //迭代已经提供好的String类对象Collection c = new ArrayList(); //创建集合cc.add("a"); //向集合c添加元素c.add("b");c.add("c");c.add("d");//对集合中的元素迭代(遍历)Iterator it = c.iterator(); //获取迭代器;获取迭代器之后,就可以使用迭代器里面的方法/*boolean b1 = it.hasNext(); //判断集合中是否有元素,有就返回trueObject obj1 = it.next(); //E next()返回迭代的下一个元素,通过next方法将那个元素给获取出来System.out.println(b1); //很显然,集合c中有4个元素,a,b,c,d,所以输出结果为trueSystem.out.println(obj1); //返回下一个元素,就是第一个元素,所以输出结果为 aboolean b2 = it.hasNext(); //判断集合中是否有元素,有就返回trueObject obj2 = it.next(); //E next()返回迭代的下一个元素,通过next方法将那个元素给获取出来System.out.println(b2); //很显然,集合c中有4个元素,a,b,c,d,所以输出结果为trueSystem.out.println(obj2); //返回下一个元素,这里就成为了第二个元素,所以输出结果为 b//通过这两次的输出,可以得出next方法可以将指针向后移动一位,第一次获取的是a,然后,又调用了一次next,第二次获取了b...//这样写太磨叽了,这里有4个元素,代码得重复4次,如果100个元素,那么这样写,代码会特别的磨叽*/while(it.hasNext()){ //boolean hasNext()如果仍有元素可以迭代,则返回 true,进行循环判断集合是否还含有元素//通过while循环,利用hasNext这个方法来判断是否有元素System.out.println(it.next()); //有元素的话,调用next方法,调用一次,指针就会向后移动一次,然后输出该元素即可//E next()返回迭代的下一个元素,通过next方法将那个元素给获取出来}}
}