Giải thích về iterator

Menu
Mình hiểu iterator là duyệt từ đầu tới cuối và hasNext trả về true nếu iterator còn phần tử kế tiếp phần tử đang duyệt. Nhưng dòng khi xem ví dụ của thầy thì lại không hiểu lắm. Nhất là đoạn while í

Đây là một đoạn code lớp ArrayList trong thư viện.

   public Iterator<E> iterator() {
        return new Itr();
    }

    /**
     * An optimized version of AbstractList.Itr
     */
    private class Itr implements Iterator<E> {
        int cursor;       // index of next element to return
        int lastRet = -1; // index of last element returned; -1 if no such
        int expectedModCount = modCount;

        Itr() {}

        public boolean hasNext() {
            return cursor != size;
        }

Theo như đó thì phương thức iterator() tạo mới một instance của lớp Itr.
Mặc định khi mới tạo index phần tử kế tiếp sẽ là phần tử đầu tiên nếu có (cursor = 0) .và lastRet = -1.
Phương thức hasNext() ở đây kiểm tra xem còn phần tử tiếp theo ko cursor != size.
Đoạn vòng lặp while của thầy bạn ở đây là: nếu còn phần tử kế tiếp while (id.hasNext()) thì lấy phần tử đó ra Personel ep1 = id.next() xét điều kiện if (ep1.getCode().equals(code)), nếu đúng thì break vòng lặp, không thì tiếp tục lặp lại cho đến khi duyệt hết danh sách thì ngừng (khi hasNext() trả về false).

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?