這些是下面的代碼中所涉及到的所有方法:* 迭代概述:* 集合是用來存儲元素,存儲的元素需要查看,那么就需要迭代(遍歷)* 也就是說,迭代就是遍歷* * 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方法將那個元素給獲取出來}}
}