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

      

    每天进步一丢丢

    完成。

  • 相关阅读:
    光场显微成像----整理
    清华大学自动化系友论坛——光电智能计算:笔记
    大创记录——Day3.12
    2.17UI bug修复
    beta阶段UI界面改进
    关于UI设计的心得体会-alpha和beta交界期间
    1.30进度
    2018.1.28进度更新
    心·迹 项目简介
    项目组成员介绍
  • 原文地址:https://www.cnblogs.com/xiaofuzi123456/p/12755418.html
Copyright © 2011-2022 走看看