首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现迭代器设计模式

实现迭代器设计模式
EN

Stack Overflow用户
提问于 2020-10-05 00:28:16
回答 1查看 109关注 0票数 0

我有一个类的例子,witch私有字段Hashmap<Integer, CustomObject>。我的目标是使用Iterable接口访问这个类中的所有CustomObject实例。首先,我声明Example来实现Iterable<CustomObject>。然后我调用iterator()方法。但是,我不知道是否应该指定hasNext()等,在主代码中放入什么?这是我到目前为止所知道的:

代码语言:javascript
复制
public class Example implements Iterable<Songs>{
  private HashMap <Integer, CustomObject>;

  @Override
  public Iterator<CustomObject> iterator() {
    for (CustomObject customObject: this){
      System.out.println(customObject);
    }

  public static void main(String[] args) {
    Example.iterator();
  }
EN

回答 1

Stack Overflow用户

发布于 2020-10-05 00:34:08

实际上,HashMap有一个方法Map::values(),它以Collection的形式返回值的集合,而实际上是一个 Iterable<T> (因此可以返回一个Iterator<T>)。

代码语言:javascript
复制
Map<Integer, CustomObject> map = new HashMap<>();
Iterator<CustomObject> iterator = map.values().iterator();

此外,您的代码有几个错误:

  • private HashMap <Integer, CustomObject>;缺少字段名,并且可能缺少您必须覆盖public Iterator<CustomObject> iterator()的initiation.
  • Implementing Iterable<Songs>。我想您的意思是class Example implements Iterable<CustomObject>.
  • Iterable::iterator不是一个静态方法,所以您不能调用Example.iterator();.

一个完整的例子假设ExampleHashMap map的一个可迭代委托,就像在你的类中一样(你忘了命名它,否则它不会编译和初始化它),然后你可以这样做:

代码语言:javascript
复制
public class Example implements Iterable<CustomObject> {

    private Map<Integer, CustomObject> delegate = ...; // initialize + data

    @Override
    public Iterator<CustomObject> iterator() {
        return this.delegate.values().iterator();
    }
}

并在这些代码片段中使用:

  • 只要Example is-a Iterable,它就可以与增强循环一起使用: for (CustomObject customObject: new Example()) { // Iterable with enhanced loop System.out.println(customObject);}

通过实际示例进行迭代:迭代器迭代器= Example().iterator();while (iterator.hasNext()) { System.out.println(iterator.next());}

只要每个示例都返回它的

  • :.forEach(System.out::println);

(Spliterator().spliterator(),false),就会从新示例到新示例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64197125

复制
相关文章

相似问题

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