首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现Iterable接口

实现Iterable接口
EN

Stack Overflow用户
提问于 2011-05-19 04:04:56
回答 4查看 4K关注 0票数 5

我刚在一张旧试卷上找到了这道试题,正在为即将到来的考试做准备。我搞不懂:

下面描述了一个实现Iterable接口的人为设计的分部类。这个类的唯一目的是提供一个迭代属性things.的方法

要完成它,我们需要在类中填写两项内容。这是类

代码语言:javascript
复制
private class PartialIterableClass /*FILL IN */ {
   private String[] things;
   public PartialIterableClass( String[] things ){
      this.things = things;
   }
   /*FILL IN 2*/
}

我猜它应该是类似于:

代码语言:javascript
复制
private class PartialIterableClass implements Iterable<PrivateIterableClass> {
   private String[] things;
   public PartialIterableClass( String[] things ){
      this.things = things;
   }
   public Iterator<PartialIterableClass> iterator( ){
   return new Iterator<PartialIterableClass>( ) {

   }
   }
}

我真的不确定如何充实这个问题的答案,但有人能帮上忙吗?

EN

回答 4

Stack Overflow用户

发布于 2011-05-19 04:13:32

您的Iterator必须实现来自Iterator接口的所有方法,以便封装迭代逻辑。

在本例中,它必须保存数组中的当前迭代索引。您可以从commons-collections查看ArrayIterator

票数 3
EN

Stack Overflow用户

发布于 2011-05-19 04:15:29

最简单的做法可能是创建一个用things中的值填充的new ArrayList<String>(),并返回对其.iterator()方法的调用结果。这当然是我在时间有限的情况下(比如考试)会做的事情,也很可能是我在真实世界的场景中会做的事情,只是为了让事情变得简单。

您可以编写自己的ArrayIterator类,或者使用在web上可以找到的各种库中的类,但这似乎会增加不必要的复杂性。

票数 2
EN

Stack Overflow用户

发布于 2011-05-19 04:50:17

代码语言:javascript
复制
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();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6050379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档