簡體   English   中英

嘗試遍歷 ArrayList 時,自定義迭代器不會打印任何內容

[英]Custom iterator won't print anything when trying to iterate through an ArrayList

我對迭代器很陌生,但是對於一個任務,我編寫了一個自定義迭代器,我想在遍歷對象列表時簡單地打印出對象,但它一直不打印任何內容,我不知道為什么。

這是自定義迭代器代碼:

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

這主要是因為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();

如果您翻轉訂單,將東西添加到訂單列表中,然后創建您的自定義訂單,一切都會如您所願。

另外,我建議將來不要使用任何自定義迭代器或包裝普通列表的列表。 我明白這是為了任務,然后可以接受

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM