zoukankan      html  css  js  c++  java
  • Java Iterator

    import java.util.Iterator;
    import java.util.NoSuchElementException;
    
    /*重新定义Iterator时,需要重载hasNext(),以及next()函数
    */
    public class OHIterator implements Iterator<OHRequest> {
        OHRequest curr;
    
        public OHIterator(OHRequest original) {
            curr = original;
        }
    
        public boolean isGood(String description) {
            return description != null && description.length() > 5;
        }
        
        @Override
        public boolean  hasNext() {
            /*if(curr == null) return false;
            */
            while(curr!= null && !isGood(curr.description)) {
                curr = curr.next;
            }
            
            return curr != null;
    
        }
        
        public OHRequest next() {
            if(!hasNext()) {
                throw new NoSuchElementException();
            }
            
            OHRequest currRequest = curr;
            curr = curr.next;
            return currRequest;
        }
    }

    2.新的迭代器 的接口为Iterator类

    public interface Iterator<T> {
        boolean hasNext();
        T next();
    }

    3.想让自己定义的类支持Foreach循环,需要继承Interable类

    import java.util.Iterator;
    import java.util.NoSuchElementException;
    //继承Iterable, 为了支持foreach循环
    public class OfficeHourQueue implements Iterable<OHRequest> {
        
        OHRequest queue;
    
        public OfficeHourQueue(OHRequest queue) {
            this.queue = queue;
        }
        
        @Override
        public Iterator<OHRequest> iterator() {
            return new OHIterator(queue);
        }
    
        public static void main(String[] args) {
            OHRequest s1 = new OHRequest("Failing my test for get in arrayDeque, NPE", "Pam", null);
            OHRequest s2 = new OHRequest("conceptual: what is dynamic method selection", "Michael", s1);
            OHRequest s3 = new OHRequest("git: what does checkout do.", "Jim", s2);
            OHRequest s4 = new OHRequest("help", "Dwight", s3);
            OHRequest s5 = new OHRequest("debugging get(i)", "Creed", s4 );
            OfficeHourQueue q = new OfficeHourQueue(s5);
    
            for(OHRequest o : q) {
                System.out.println(o.name);
    
            }
        }
    
    
        
    }
    The Safest Way to Get what you Want is to Try and Deserve What you Want.
  • 相关阅读:
    MFC添加图标到托盘
    MFC中CString转int,double
    c语言练习13——打印出所有的“水仙花数”
    c语言练习12——判断101-200 之间有多少个素数,并输出所有素数
    c语言练习11——兔子问题
    c语言练习10——输出国际象棋棋盘
    c语言练习9——打印楼梯和笑脸
    c语言练习8——输出9*9 乘法表
    c语言练习7——输出特殊图案
    c语言练习6——用*号输出字母C的图案
  • 原文地址:https://www.cnblogs.com/Shinered/p/10651536.html
Copyright © 2011-2022 走看看