c# - Java中的 yield 返回

标签 c# java linked-list

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

我将如何创建上述的 java 版本,以便可以迭代链接列表中包含的所有项目?

我希望能够编写代码 ala

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

并认为 Value 'property'/method 将包含类似的代码

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

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

最佳答案

您可以返回 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
                }

            };
        }
    };
}

关于c# - Java中的 yield 返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2352399/

相关文章:

c# - 如何将 switch case 操作放入 C# 的循环中?

c# - Fancybox - ASP.NET 按钮不工作

c# - 涉及锁时,代码契约(Contract)警告 "ensures unproven"

java - 如何从 try catch block 外部访问变量?

Java:如何使用虚拟节点或将节点标记为虚拟节点

c# - 优化 C# 代码片段

java - 用填充的数据库覆盖您的应用程序数据库

java - 持久化应用程序属性的好方法是什么?

Java 链表 : remove from to to

c++ - 链表 C++ 段错误