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());
            }
        }
    

      

    每天进步一丢丢

    完成。

  • 相关阅读:
    虚拟机磁盘和OSNetworkManagement
    虚拟化的设计考量
    魔獸世界台服身份證ID生成器
    完美的Windows Server 2008 R2 SP1 模板
    Windows 脚本主机概述
    创建动态链接库的方法简介
    iPad3越狱方法
    关于用netsh.exe配置系统防火及网络
    金蝶客户端多用户远程桌面解决方案
    poj 1459 最大流(EK实现)
  • 原文地址:https://www.cnblogs.com/xiaofuzi123456/p/12755418.html
Copyright © 2011-2022 走看看