private SomeObject[] all_objs;
public Iterator<SomeObject> iterator() {
//
}
从SomeObject
数组中获取迭代器的最佳方法是什么?
修改 所以没有使用像ArrayLists或HashSets这样的包装器就无法生成迭代器?
答案 0 :(得分:5)
您可以编写自己的实现Iterator<SomeObject>
的类。只需实现界面的方法。如果您不希望迭代器的用户从数组中删除项(因为它不是ArrayList),则在调用此方法时抛出UnsupportedOperationException。
当然如果你使用ArrayList<SomeObject>
,那么iterator()
方法只需要从ArrayList返回迭代器,这会让你的生活更轻松。
答案 1 :(得分:3)
使用List
迭代器:
import java.util.List;
import java.util.Arrays;
public <T> Iterator<T> iterator() {
List<T> list = (List<T>) Arrays.asList(all_objs);
return list.iterator();
}
答案 2 :(得分:1)
您还可以查看java.util.ArrayList的代码。这是你应该如何实现它。
T=SomeObject //Your Class
public YourIterable<T> implements Iterable<T>{
//**Iterable** Implementing this interface allows an object
//to be the target of the "foreach" statement.
public Iterator<T> iterator() {
return new Itr();
}
private class Itr implement Iterator<T> {
//Complex Implementation - You have to maintain a Cursor to keep track of
// which record was accessed
boolean hasNext() {
//Returns true if the iteration has more elements.
}
T next() {
//Returns the next element in the iteration.
}
void remove() {//Remove
}
}
}