Пользовательский итератор ничего не печатает при попытке перебрать ArrayList - PullRequest
0 голосов
/ 06 января 2020

Я очень новичок в итераторах, но для назначения я написал собственный итератор и хочу просто распечатать объект, пока я перебираю их список, но он ничего не печатает, и я понятия не имею, почему.

Вот пользовательский код итератора:

import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;

public class MyList<T> implements Iterable<T> {
    private List<T> list;

    private class MyIterator<t> implements Iterator<t> {
        int lSize = list.size();
        int lPoint = 0;

        public boolean hasNext() {          
            return (lPoint < lSize);
        }

        public t next() {                   
            if (!hasNext()) {
                throw new NoSuchElementException();
            }

            t val = (t) list.get(lPoint);
            lPoint++;

            return val;
        }

    }

    public MyList(List<T> list) {
        this.list = list;
    }

    public Iterator<T> iterator() {
        return new MyIterator<>();
    }

}

Вот класс, который я использую для его проверки:

Public class TestCloning {

    Electronics test = new Electronics("Test", 100, 10);
    Electronics test3 = new Electronics("Test2", 300, 30);
    List<Electronics> order1 = new ArrayList<>();
    MyList<Electronics> mList1 = new MyList<>(order1);
    Iterator<Electronics> mIterator1 = mList1.iterator();

    public void testIterator(){
        order1.add(test);
        order1.add(test3);
        while (mIterator1.hasNext()){
            System.out.println(mIterator1.next().toString());
        }
    }
}

1 Ответ

1 голос
/ 06 января 2020

Это в основном потому, что lSize=0 Причина, по которой он равен нулю, заключается в том, что вы добавляете список вещей в myList до того, как фактически добавляете какие-либо элементы в этот список.

List<String> order1 = new ArrayList<>();
order1.add(test);
order1.add(test3);
MyList<String> mList1 = new MyList<>(order1);
Iterator<String> mIterator1 = mList1.iterator();

Если вы переверните заказ, добавьте вещи в список заказов, затем создайте свой собственный, все будет работать так, как вы ожидаете.

Кроме того, я предлагаю в будущем не использовать никаких пользовательских итераторов или списков, которые переносятся. нормальные списки. Я понимаю, что это с целью назначения, а затем приемлемо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...