Iterator迭代器對象

目錄:java

》迭代器Iterator的使用this

》迭代字符串集合spa

》迭代對象集合指針

》迭代器使用圖解,和原理分析code

》Java迭代器源代碼對象

》迭代器Iterator的使用:blog

》迭代字符串集合接口

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/**
 * 集合的迭代
 * 
 * Iterator iterator() 集合的專用迭代器
 *      E next()獲取指針當前的元素,指針移向下一個元素
 *             NoSuchElementException 沒有這樣的元素,由於你已經找到了最後
 *         boolean hasNext() 若是仍有元素能夠迭代,則返回 true。
 */
public class IteratorDemo {
    public static void main(String[] args) {
        //建立集合
        Collection c=new ArrayList();
        
        //向集合中添加元素
        c.add("hello");
        c.add("world");
        c.add("java");
        
        //Iterator iterator()迭代器,集合的專用迭代方式
        Iterator it=c.iterator();//Iterator是接口,iterator() 方法返回的是實現類,這裏是多態
        System.out.println(it.next());
        System.out.println(it.next());
        System.out.println(it.next());
//        System.out.println(it.next());//
        
        
        
//        String s=null;
//        while(it.hasNext()){
//            s=(String)it.next();
//            System.out.println(s);
//        }
    }
}

》迭代對象集合字符串

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
 * 
 * 練習:用集合存儲5個學生對象,並把學生進行遍歷,用迭代器遍歷。
 *
 *問題1:能用while循環,那麼能不能用for循環?
 *問題2:不要次使用it.next()方法,由於每次使用都是訪問一個對象。
 */
public class IteratorTest {
    public static void main(String[] args) {
        //建立集合對象
        Collection c=new ArrayList();
        
        //建立學生對象
        Student s1=new Student("林清",26);
        Student s2=new Student("周潤發",45);
        Student s3=new Student("黃健翔",25);
        Student s4=new Student("謝霆鋒",30);
        Student s5=new Student("王菲",30);
        
        //向集合中添加學生對象
        c.add(s1);
        c.add(s2);
        c.add(s3);
        c.add(s4);
        c.add(s5);
        
        //獲得集合的迭代器
        Iterator it=c.iterator();
        
        //使用迭代器遍歷學生集合
        Student s=null;
        while(it.hasNext()){
             s=(Student)it.next();
             System.out.println(s.getName()+"------"+s.getAge());
             
             //NoSuchElementException 不要屢次使用it.next()方法
            // System.out.println(((Student)it.next()).getName()+"-----"+((Student)it.next()).getAge());
        }
        
        
        //for循環改寫
    /*    Student s=null;
        for(Iterator it=c.iterator();it.hasNext();){
             s=(Student)it.next();
             System.out.println(s.getName()+"------"+s.getAge());
        }*/
    }
}

 

//beanget

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 setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    
}

 

》迭代器使用圖解,和原理分析

》java迭代器源代碼

public interface Inteator {
    boolean hasNext();
    Object next(); 
}

public interface Iterable {
    Iterator iterator();
}

public interface Collection extends Iterable {
    Iterator iterator();
}

public interface List extends Collection {
    Iterator iterator();
}

public class ArrayList implements List {//在實現類裏面纔有Iterator接口的具體實現
    public Iterator iterator() {
        return new Itr();
    }
    
    private class Itr implements Iterator {//是一個內部類,而且是不爲外人所知的私有的
        public boolean hasNext() {}
        public Object next(){} 
    }
}


Collection c = new ArrayList();
c.add("hello");
c.add("world");
c.add("java");
Iterator it = c.iterator();     //new Itr();
while(it.hasNext()) {
    String s = (String)it.next();
    System.out.println(s);
}
相關文章
相關標籤/搜索