zoukankan      html  css  js  c++  java
  • Java迭代器

    1.自定义实现迭代器

    第一种方式:

    public class IteratorTest {
        private String[] elements = {"a", "b", "c", "d", "f", "g"};
        private int size = elements.length;
    
        public Iterator iterator() {
            return new Itr();
        }
    
        private class Itr implements Iterator {
    
            int cursor = 0; //元素的索引
            int lastRet = 0; //删除比较索引的位置
    
            @Override
            public boolean hasNext() {
                return cursor != size;
            }
    
            @Override
            public Object next() {
                String value = elements[cursor];
                cursor++;
                return value;
            }
    
            @Override
            public void remove() {
                String reValue = elements[lastRet];
                int numMoved = size - lastRet - 1;
                if (numMoved > 0)
                    System.arraycopy(elements, lastRet + 1, elements, lastRet,
                            numMoved);
                //lastRet++;
                elements[--size] = null;
            }
        }
    }  

    第二种方式:

    public class IteratorTest {
        private String[] elements = {"a", "b", "c", "d", "f", "g"};
        private int size = elements.length;
        
        public Iterator iterator() {
            //匿名内部类
            return new Iterator() {
                int cursor = 0; //元素的索引
                int lastRet = 0; //删除比较索引的位置
    
                @Override
                public boolean hasNext() {
                    return cursor != size;
                }
    
                @Override
                public Object next() {
                    String value = elements[cursor];
                    cursor++;
                    return value;
                }
    
                @Override
                public void remove() {
                    String reValue = elements[lastRet];
                    int numMoved = size - lastRet - 1;
                    if (numMoved > 0)
                        System.arraycopy(elements, lastRet + 1, elements, lastRet,
                                numMoved);
                    //lastRet++;
                    elements[--size] = null;
                }
            };
        }
        
    } 

    测试类

     public static void main(String[] args) {
            IteratorTest iteratorTest = new IteratorTest();
            Iterator iterators = iteratorTest.iterator();
            while (iterators.hasNext()) {
                System.out.println(iterators.next());
            }
        }
    

      

    每天进步一丢丢

    完成。

  • 相关阅读:
    onLoad和DomContentLoad的区别
    懒加载和预加载区别
    各大浏览器特点
    移动端适配
    清除浮动的方法
    rem的计算
    粗结MySql数据库基础知识点之一
    单例模式(饿汉式单例模式与懒汉式单例模式)
    关于ajax技术
    浅谈EL与JSTL
  • 原文地址:https://www.cnblogs.com/xiaofuzi123456/p/12755418.html
Copyright © 2011-2022 走看看