迭代器模式(Iterable)

迭代器模式一般應用于需要對元素進行遍歷的集合,列表,哈希表等。需要實現(xiàn)可迭代化接口(Iterable<T>)里的 public Iterator<Person> iterator()方法。Iterator接口需要實現(xiàn) hasNext和next方法。

 public static void main(String[] args) {
        for (Person person : new Persons()) {
            System.out.println(person);
        }
    }

    @Data
    @AllArgsConstructor
    public static class Person {
        private String name;

        private Integer age;
    }

    public static class Persons implements Iterable<Person> {

        private List<Person> getPersons() {
            return IntStream.range(0, 5).mapToObj((i) ->
                            new Person("kaka" + i, 20 + i)
            ).collect(Collectors.toList());
        }

        @Override
        public Iterator<Person> iterator() {
            // return this.getPersons().iterator();
            return new LinkedIterator();
        }
    }

    public static class Node {
        public int val;
        public Node next;

        private Node(int val) {
            this.val = val;
        }

        private Node(int val, Node next) {
            this.val = val;
            this.next = next;
        }
    }

    static {
        Node node4 = new Node(4);
        Node node3 = new Node(3, node4);
        Node node2 = new Node(2, node3);
        node = new Node(1, node2);

    }

    private static Node node;

    public static class LinkedIterator implements Iterator<Person> {

        Node cur = node;

        @Override
        public boolean hasNext() {
            return cur != null;
        }

        @Override
        public Person next() {
            Person person = new Person("kaka" + cur.val, cur.val);
            cur = cur.next;
            return person;
        }
    }
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容