【问题标题】:How to convert Collection to Iterables?如何将 Collection 转换为 Iterables?
【发布时间】:2014-01-20 15:14:22
【问题描述】:

我有方法,它返回java.util.Collection

我想用Iterables.find

我该怎么做?

【问题讨论】:

  • 不清楚你的意思。 Collections2<E> 只有静态方法。您不能创建它的实例。 Iterables<E> 是一样的。您无法在它们之间进行转换,因为您从来没有它们中的任何一个的实例...如果您可以发布一个简短但完整的示例来说明您的意思,这将非常有帮助。
  • 你不能创建它的实例。请出示
  • 嗯,我怎样才能展示一些不可能的东西?为什么不尝试创建Collections2<Integer>Iterables<Integer> 的实例?您现在提供的示例似乎与问题无关,因为它没有引用 Collections2
  • 如果你想达到这个目的,为什么不在List 中使用contains 方法?
  • 对不起,愚蠢的问题

标签: java guava


【解决方案1】:

我有Collections2<Integer>

我敢打赌你不会。你不能实例化Collections2(除了反射),即使你这样做了,它也没有被参数化。

因此我想将其转换为Iterables<Integer>

假设你的意思是Iterable<Integer>,这行应该可以:

Iterable<Integer> = yourIntegerList;

如果您想将IterablesList 一起使用,那就这样做吧:

Iterables.contains(yourIntegerList, 2)

但是 Lists 有一个古老的简单方法:只需 yourIntegerList.contains(2)

更新问题的更新

没有任何变化,每个Collection 也是一个Iterable

去做吧。如果您遇到错误,请告诉我们。 否则,我们唯一知道的是,您目前对 w.r.t. 感到很困惑。层次结构。

【讨论】:

  • @gstackoverflow:没问题。如果你现在觉得它很蠢,那说明你学得很好。
【解决方案2】:

我有方法,它返回Collection

查看Collection 的JavaDoc,您会发现它有一个Iterable 的SuperInterface。因为这是Iterables.find() 的第一个参数所需要的,所以你有你需要的。创建一个Function 进行查找,您就拥有了所需的一切。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多