Reputation: 1651
I have created :
LinkedList<LinkedList<Object>>
I know how to implement Iterable
for regular linked list in order to iterate.
However, how can I implement Iterable
in order to be able to iterate over my collection when it is
LinkedList<LinkedList<Object>> ?
Upvotes: 1
Views: 387
Reputation: 72874
Iterable
is a generic interface. Since you want to iterate over a LinkedList<LinkedList<Object>>
, you can implement the interface with the type parameter set to LinkedList<Object>
.
Sample runnable class:
public class IterableClass implements Iterable<LinkedList<Object>>{
LinkedList<LinkedList <Object>> l = new LinkedList<LinkedList<Object>>();
public IterableClass() {
super();
LinkedList<Object> a = new LinkedList<Object>();
a.add("a1");
a.add("a2");
LinkedList<Object> b = new LinkedList<Object>();
b.add("b1");
b.add("b2");
l.add(a);
l.add(b);
}
public static void main(String[] args) {
IterableClass iterableObject = new IterableClass();
for(Iterator<LinkedList<Object>> it = iterableObject.iterator(); it.hasNext(); ) {
LinkedList<Object> list = it.next();
for (Iterator<Object> iterator = list.iterator(); iterator.hasNext();) {
Object object = iterator.next();
System.out.println(object);
}
}
}
@Override
public Iterator<LinkedList<Object>> iterator() {
return l.iterator();
}
}
Output:
a1
a2
b1
b2
Upvotes: 1
Reputation: 4574
Like here:
Iterator<LinkedList <Object>> iterator = yourList.iterator();
while (iterator.hasNext()) {
LinkedList<Object> embededList=iterator.next();
Iterator<Object> embededIterator= embededList.iterator();
while(embededIterator.hasNext()){
System.out.println(embededIterator.next());
}
}
edited.
Upvotes: 1