Java 中的收益率

新手上路,请多包涵

我已经使用泛型在 Java 中创建了一个链表,现在我希望能够遍历列表中的所有元素。在 C# 中,我会在链表中使用 yield return ,同时遍历列表中包含的元素列表。

我将如何创建上面的 Java 版本,我可以在其中迭代链接列表中包含的所有项目?

我希望能够编写代码 ala

 LinkedList<something> authors = new LinkedList<something>();
for (Iterator<something> i = authors.Values ; i.HasNext())
      doSomethingWith(i.Value);

并且认为值“属性”/方法将由类似于

LinkedListObject<something> current = first;
While (current != null){
 yield return current.getValue();
 current = current.getNext()
}

编辑:请注意,我对使用任何第 3 方 API 不感兴趣。仅内置 Java 功能。

原文由 Kasper Holdum 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 285
1 个回答

您可以返回 Iterable 的匿名实现。效果非常相似,只是这更冗长。

 public Iterable<String> getStuff() {
    return new Iterable<String>() {

        @Override
        public Iterator<String> iterator() {
            return new Iterator<String>() {

                @Override
                public boolean hasNext() {
                    // TODO code to check next
                }

                @Override
                public String next() {
                    // TODO code to go to next
                }

                @Override
                public void remove() {
                    // TODO code to remove item or throw exception
                }

            };
        }
    };
}

原文由 voidvector 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题