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<something> authors = new LinkedList<something>();
for (Iterator<something> i = authors.Values ; i.HasNext())
doSomethingWith(i.Value);
And was thinking that the Value 'property'/method would consist of code resembling
LinkedListObject<something> 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.
You can return an anonymous implementation of Iterable. The effects are pretty pretty similar, just that this is a lot more verbose.
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
}
};
}
};
}