获取Iterable的元素索引

时间:2013-07-21 11:26:19

标签: scala scala-collections

在集合中查找元素索引的优雅方法是什么?现在我实现了这样的方法:

  def getIndexForValue[T] (value: T, collection: Iterable[T]): Option[Int] = {
    val pair = collection.zipWithIndex.find(_._1 == value)
    if (pair.isDefined) Some(pair.get._2) else None
  }

可以用更优雅的方式重写吗?感谢

1 个答案:

答案 0 :(得分:2)

只需

collection.indexOf(value)

请注意,如果集合不是Seq的子类型,则索引没有意义。

如果你真的想获得任何收藏的index,你可以使用

collection.toSeq.indexOf(value)

在某个起始索引之后或某个起始索引处查找此列表中某个值的第一次出现的索引。 ELEM 要搜索的元素值。 从 起始指数 回报 索引> =来自此列表的第一个元素(由==确定)到elem,如果不存在则为-1。