【问题标题】:Java, How Iterate through Collection<? extends E>?Java,如何遍历 Collection<?扩展 E>?
【发布时间】:2015-06-17 13:54:40
【问题描述】:

所以我得到了一个接口,我需要实现的一种方法给了我一个 Collection,并希望我将集合中的数据“添加”到我的对象中。我仍然不确定集合到底是什么。它是一个数组列表吗?我不相信它是,但我可以为集合中的每条数据使用 for each 循环吗?或者是否有另一种方法来遍历收集访问所有值。

【问题讨论】:

标签: java collections iteration abstract-data-type


【解决方案1】:

来自Collection的文档:

集合层次结构中的根接口。一个集合 表示一组对象,称为它的元素。一些收藏 允许重复元素,而其他元素则不允许。有些是订购和 其他无序。

您可以使用forfor-each 循环或使用Iterator 对其进行迭代。

最常见的集合类型是:

【讨论】:

    【解决方案2】:

    可以使用Iterator 来迭代Collection&lt;? extends E&gt;(您可以使用Collection.iterator() 获得一个可以迭代Collection)的方法

    public static <E> void iterateWithIterator(Collection<? extends E> coll) {
        Iterator<? extends E> iter = coll.iterator();
        while (iter.hasNext()) {
            E item = iter.next();
            // do something with the item.
        }
    }
    

    或者,对于 Java 5+,使用 for-each loop 类似

    public static <E> void forEachIterate(Collection<? extends E> coll) {
        for (E item : coll) {
            // do something with the item.
        }
    }
    

    【讨论】:

    • 由于某种原因,在我的情况下,我得到一个编译错误:错误:不兼容的类型:类 不能转换为 E。有什么想法吗? Android/Java-7
    • PECS。生产者扩展,消费者超级。您在哪里使用该集合,它可能应该是Collection&lt;? super E&gt; coll
    猜你喜欢
    • 2021-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 2011-02-08
    相关资源
    最近更新 更多