Java 如何从特定对象的数组生成迭代器 private SomeObject[]所有对象; 公共迭代器迭代器(){ // }
从Java 如何从特定对象的数组生成迭代器 private SomeObject[]所有对象; 公共迭代器迭代器(){ // },java,arrays,iterator,Java,Arrays,Iterator,从SomeObject数组中获取迭代器的最佳方法是什么 编辑 因此,如果不使用像ArrayList或Hashset这样的包装器,就无法生成迭代器 您可以编写自己的类来实现迭代器。简单地实现接口的方法。如果不希望迭代器的用户从数组中删除项(因为它不是ArrayList),那么如果调用此方法,则抛出UnsupportdOperationException 当然,如果使用ArrayList,那么iterator()方法只需从ArrayList返回迭代器即可,从而使您的生活更加轻松。使用列表迭代器: p
SomeObject
数组中获取迭代器的最佳方法是什么
编辑
因此,如果不使用像ArrayList或Hashset这样的包装器,就无法生成迭代器 您可以编写自己的类来实现
迭代器
。简单地实现接口的方法。如果不希望迭代器的用户从数组中删除项(因为它不是ArrayList),那么如果调用此方法,则抛出UnsupportdOperationException
当然,如果使用
ArrayList
,那么iterator()
方法只需从ArrayList返回迭代器即可,从而使您的生活更加轻松。使用列表
迭代器:
private SomeObject[] all_objs;
public Iterator<SomeObject> iterator() {
//
}
import java.util.List;
导入java.util.array;
公共迭代器迭代器(){
List=(List)Arrays.asList(所有对象);
return list.iterator();
}
您还可以查看的代码。下面是您应该如何实现它
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();
}
T=SomeObject//您的类
公共YouIterable实现Iterable{
//**Iterable**实现此接口允许对象
//成为“foreach”语句的目标。
公共迭代器迭代器(){
返回新的Itr();
}
私有类Itr实现迭代器{
//复杂的实现-您必须维护一个游标来跟踪
//访问了哪个记录
布尔hasNext(){
//如果迭代包含更多元素,则返回true。
}
T next(){
//返回迭代中的下一个元素。
}
void remove(){//remove
}
}
}
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
}
}
}