简体   繁体   English

如何实现LinkedList的可迭代 <LinkedList<obj> &gt;

[英]how can I implement iterable for LinkedList<LinkedList<obj>>

I have created : 我创造了 :

LinkedList<LinkedList<Object>>

I know how to implement Iterable for regular linked list in order to iterate. 我知道如何为常规链表实现Iterable以便进行迭代。

However, how can I implement Iterable in order to be able to iterate over my collection when it is 但是,如何实现Iterable ,以便能够在其集合上进行迭代

LinkedList<LinkedList<Object>> ? 

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. 编辑。

Iterable is a generic interface. Iterable是通用接口。 Since you want to iterate over a LinkedList<LinkedList<Object>> , you can implement the interface with the type parameter set to LinkedList<Object> . 由于要遍历LinkedList<LinkedList<Object>> ,因此可以使用类型参数设置为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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM