I've created a linked list in java using generics, and now I want to be able to iterate over all the elements in the list. In C# I would use yield return inside the linked list while going over the list of elements contained in the list.
How would I go about creating a java version of the above where I can iterate over all the items contained in the linked list?
I'm looking to be able to write code ala
LinkedList authors = new LinkedList();
for (Iterator i = authors.Values ; i.HasNext())
doSomethingWith(i.Value);
And was thinking that the Value 'property'/method would consist of code resembling
LinkedListObject current = first;
While (current != null){
yield return current.getValue();
current = current.getNext()
}
Edit: Notice that I'm not interested in using any 3rd party APIs. Built-in java functionality only.
解决方案
Am I missing something here? There is already java.util.LinkedList, it is fully generics-enabled, and it has a method which returns an Iterator.
If you really want to re-invent the wheel, I'd suggest you look into to creating a LinkedListIterator class, probably implementing ListIterator. It would remember its current position within the linked list and advance it on each successive call.