我在 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/