• 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.
  • 相关阅读:
    iPhone控件之UIWebView2
    Xcode 4.1/4.2 免证书(iDP)开发+真机调试
    iPhone控件之UIToolbar
    POJ 2472 ||SDUT 2358 106 miles to Chicago(Dijkstra算法变形)
    POJ 2418 Hardwood Species(二叉排序树)
    POJ 2513 Colored Sticks(字典树 + 并查集 + 欧拉回路)
    HDU 4033 Regular Polygon(几何 + 二分)
    POJ 3191 The Moronic Cowmpouter(二进制的变形)
    POJ 2442 Sequence(堆的应用)
    HDU 4036 Rolling Hongshu(数学+物理应用)
  • 原文地址:https://www.cnblogs.com/Shinered/p/10651536.html
Copyright © 2020-2023  润新知