[英]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.