zoukankan      html  css  js  c++  java
  • java设计模式之迭代器

    Jdk里最不缺得就是迭代器,自己写一个,加深下理解

    public class CustomList<T> implements Iterable<T> {
        private final Object[] items = new Object[20];
        private int size = 0;
    
        public void add(T t) {
            items[size] = t;
            size++;
        }
    
        public T get(int index) {
            return (T) items[index];
        }
    
        public T remove(int index) {
            if (index > size - 1 || index < 0) {
                throw new ArrayIndexOutOfBoundsException("下标越界");
            }
            T r = (T) items[index];
            for (int i = index; i < size - 1; i++) {
                items[i] = items[i + 1];
            }
            items[--size] = null;
            return r;
        }
    
        /**
         * 正向迭代
         *
         * @return
         */
        public Iterator<T> iterator() {
    
            return new Iterator<T>() {
                int index = 0;
    
                @Override
                public boolean hasNext() {
                    return index < size;
                }
    
                @Override
                public T next() {
                    return (T) items[index++];
                }
            };
        }
    
        /**
         * 反向迭代
         *
         * @return
         */
        public Iterator<T> reverseIterator() {
    
            return new Iterator<T>() {
                int index = size - 1;
    
                @Override
                public boolean hasNext() {
                    return index >= 0;
                }
    
                @Override
                public T next() {
                    return (T) items[index--];
                }
            };
        }
    
        @Override
        public String toString() {
            return "CustomList{" +
                    "items=" + Arrays.toString(items) +
                    ", size=" + size +
                    '}';
        }
    
        public static void main(String[] args) {
            CustomList<Integer> list = new CustomList<>();
            for (int i = 0; i < 10; i++) {
                list.add(i);
            }
            Iterator<Integer> iterator = list.iterator();
            while (iterator.hasNext()) {
                System.out.print(iterator.next() + ",");
            }
    
            System.out.println();
    
            Iterator<Integer> reverseIterator = list.reverseIterator();
            while (reverseIterator.hasNext()) {
                System.out.print(reverseIterator.next() + ",");
            }
            
        }
        
    }
  • 相关阅读:
    第05组 Beta版本演示
    第05组 Beta冲刺(4/4)
    第05组 Beta冲刺(3/4)
    RogrePirates Scrum Meeting 博客汇总
    Beta阶段事后分析
    Beta阶段项目展示
    Beta阶段发布说明
    Beta阶段测试报告
    Beta阶段第十次会议
    Beta阶段第九次会议
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/15162832.html
Copyright © 2011-2022 走看看