我刚在一张旧试卷上找到了这道试题,正在为即将到来的考试做准备。我搞不懂:
下面描述了一个实现Iterable接口的人为设计的分部类。这个类的唯一目的是提供一个迭代属性things.的方法
要完成它,我们需要在类中填写两项内容。这是类
private class PartialIterableClass /*FILL IN */ {
private String[] things;
public PartialIterableClass( String[] things ){
this.things = things;
}
/*FILL IN 2*/
}我猜它应该是类似于:
private class PartialIterableClass implements Iterable<PrivateIterableClass> {
private String[] things;
public PartialIterableClass( String[] things ){
this.things = things;
}
public Iterator<PartialIterableClass> iterator( ){
return new Iterator<PartialIterableClass>( ) {
}
}
}我真的不确定如何充实这个问题的答案,但有人能帮上忙吗?
发布于 2011-05-19 04:13:32
您的Iterator必须实现来自Iterator接口的所有方法,以便封装迭代逻辑。
在本例中,它必须保存数组中的当前迭代索引。您可以从commons-collections查看ArrayIterator
发布于 2011-05-19 04:15:29
最简单的做法可能是创建一个用things中的值填充的new ArrayList<String>(),并返回对其.iterator()方法的调用结果。这当然是我在时间有限的情况下(比如考试)会做的事情,也很可能是我在真实世界的场景中会做的事情,只是为了让事情变得简单。
您可以编写自己的ArrayIterator类,或者使用在web上可以找到的各种库中的类,但这似乎会增加不必要的复杂性。
发布于 2011-05-19 04:50:17
private class PartialIterableClass implements Iterable<String> {
private String[] things;
public PartialIterableClass( String[] things ){
this.things = things;
}
@Override
public Iterator<String> iterator() {
return Arrays.asList(things).iterator();
}
}https://stackoverflow.com/questions/6050379
复制相似问题