Index

trait Index[T] extends Iterable[T] with T => Int with Serializable

Trait that marks an O(1) bidirectional map between Ints (increasing from 0) and T's. This class is used, for example, to efficiently build unique vector space mappings for strings. The methods in this trait do not mutate the underlying index. Use either a MutableIndex or one of the companion object constructor methods to build an index.

Companion:
object
trait Serializable
trait T => Int
trait Iterable[T]
trait IterableOnce[T]
class Object
trait Matchable
class Any
class EitherIndex[L, R]
class IsomorphismIndex[T, U]
trait MutableIndex[T]
class HashIndex[T]
class OptionIndex[T]
class PairIndex[T, U]

Value members

Abstract methods

def apply(t: T): Int

Returns the int id of the given element (0-based) or -1 if not found in the index. This method never changes the index (even in MutableIndex).

Returns the int id of the given element (0-based) or -1 if not found in the index. This method never changes the index (even in MutableIndex).

def pairs: Iterator[(T, Int)]

Returns the indexed items along with their indicies

Returns the indexed items along with their indicies

def size: Int

Number of elements in this index.

Number of elements in this index.

def unapply(i: Int): Option[T]

Returns Some(t) if this int corresponds to some object, and None otherwise.

Returns Some(t) if this int corresponds to some object, and None otherwise.

Concrete methods

def contains(t: T): Boolean

Returns true if this index contains the element t.

Returns true if this index contains the element t.

override def equals(other: Any): Boolean
Definition Classes
Any
def get(i: Int): T

Returns an object at the given position or throws IndexOutOfBoundsException if it's not found.

Returns an object at the given position or throws IndexOutOfBoundsException if it's not found.

override def hashCode: Int
Definition Classes
Any
def indexOf(t: T): Int

Override Iterable's linear-scan indexOf to use our apply method.

Override Iterable's linear-scan indexOf to use our apply method.

def indexOpt(t: T): Option[Int]

Returns Some(i) if the object has been indexed, or None.

Returns Some(i) if the object has been indexed, or None.

override def toString: String
Definition Classes
def |[U](right: Index[U]): EitherIndex[T, U]

Inherited methods

final def ++[B >: T](suffix: IterableOnce[B]): Iterable[B]
Inherited from:
IterableOps
Inherited from:
IterableOnceOps
def andThen[A](g: Int => A): T => A
Inherited from:
Function1
def collect[B](pf: PartialFunction[T, B]): Iterable[B]
Inherited from:
IterableOps
def collectFirst[B](pf: PartialFunction[T, B]): Option[B]
Inherited from:
IterableOnceOps
def compose[A](g: A => T): A => Int
Inherited from:
Function1
def concat[B >: T](suffix: IterableOnce[B]): Iterable[B]
Inherited from:
IterableOps
def copyToArray[B >: T](xs: Array[B], start: Int, len: Int): Int
Inherited from:
IterableOnceOps
@deprecatedOverriding(message = "This should always forward to the 3-arg version of this method", since = "2.13.4")
def copyToArray[B >: T](xs: Array[B], start: Int): Int
Inherited from:
IterableOnceOps
@deprecatedOverriding(message = "This should always forward to the 3-arg version of this method", since = "2.13.4")
def copyToArray[B >: T](xs: Array[B]): Int
Inherited from:
IterableOnceOps
def corresponds[B](that: IterableOnce[B])(p: (T, B) => Boolean): Boolean
Inherited from:
IterableOnceOps
def count(p: T => Boolean): Int
Inherited from:
IterableOnceOps
def drop(n: Int): Iterable[T]
Inherited from:
IterableOps
def dropRight(n: Int): Iterable[T]
Inherited from:
IterableOps
def dropWhile(p: T => Boolean): Iterable[T]
Inherited from:
IterableOps
override def empty: Iterable[T]
def exists(p: T => Boolean): Boolean
Inherited from:
IterableOnceOps
def filter(pred: T => Boolean): Iterable[T]
Inherited from:
IterableOps
def filterNot(pred: T => Boolean): Iterable[T]
Inherited from:
IterableOps
def find(p: T => Boolean): Option[T]
Inherited from:
IterableOnceOps
def flatMap[B](f: T => IterableOnce[B]): Iterable[B]
Inherited from:
IterableOps
def flatten[B](implicit asIterable: T => IterableOnce[B]): Iterable[B]
Inherited from:
IterableOps
def fold[A1 >: T](z: A1)(op: (A1, A1) => A1): A1
Inherited from:
IterableOnceOps
def foldLeft[B](z: B)(op: (B, T) => B): B
Inherited from:
IterableOnceOps
def foldRight[B](z: B)(op: (T, B) => B): B
Inherited from:
IterableOnceOps
def forall(p: T => Boolean): Boolean
Inherited from:
IterableOnceOps
def foreach[U](f: T => U): Unit
Inherited from:
IterableOnceOps
protected def fromSpecific(coll: IterableOnce[T]): Iterable[T]
def groupBy[K](f: T => K): Map[K, Iterable[T]]
Inherited from:
IterableOps
def groupMap[K, B](key: T => K)(f: T => B): Map[K, Iterable[B]]
Inherited from:
IterableOps
def groupMapReduce[K, B](key: T => K)(f: T => B)(reduce: (B, B) => B): Map[K, B]
Inherited from:
IterableOps
def grouped(size: Int): Iterator[Iterable[T]]
Inherited from:
IterableOps
def head: T
Inherited from:
IterableOps
Inherited from:
IterableOps
def init: Iterable[T]
Inherited from:
IterableOps
Inherited from:
IterableOps
Inherited from:
IterableOnceOps
Definition Classes
Inherited from:
IterableOps
Inherited from:
IterableOnce
Inherited from:
IterableOnce
def last: T
Inherited from:
IterableOps
Inherited from:
IterableOps
def lazyZip[B](that: Iterable[B]): LazyZip2[T, B, Index[T]]
Inherited from:
Iterable
def map[B](f: T => B): Iterable[B]
Inherited from:
IterableOps
def max[B >: T](implicit ord: Ordering[B]): T
Inherited from:
IterableOnceOps
def maxBy[B](f: T => B)(implicit cmp: Ordering[B]): T
Inherited from:
IterableOnceOps
def maxByOption[B](f: T => B)(implicit cmp: Ordering[B]): Option[T]
Inherited from:
IterableOnceOps
def maxOption[B >: T](implicit ord: Ordering[B]): Option[T]
Inherited from:
IterableOnceOps
def min[B >: T](implicit ord: Ordering[B]): T
Inherited from:
IterableOnceOps
def minBy[B](f: T => B)(implicit cmp: Ordering[B]): T
Inherited from:
IterableOnceOps
def minByOption[B](f: T => B)(implicit cmp: Ordering[B]): Option[T]
Inherited from:
IterableOnceOps
def minOption[B >: T](implicit ord: Ordering[B]): Option[T]
Inherited from:
IterableOnceOps
final def mkString: String
Inherited from:
IterableOnceOps
final def mkString(sep: String): String
Inherited from:
IterableOnceOps
final def mkString(start: String, sep: String, end: String): String
Inherited from:
IterableOnceOps
protected def newSpecificBuilder: Builder[T, Iterable[T]]
@deprecatedOverriding(message = "nonEmpty is defined as !isEmpty; override isEmpty instead", since = "2.13.0")
Inherited from:
IterableOnceOps
def partition(p: T => Boolean): (Iterable[T], Iterable[T])
Inherited from:
IterableOps
def partitionMap[A1, A2](f: T => Either[A1, A2]): (Iterable[A1], Iterable[A2])
Inherited from:
IterableOps
def product[B >: T](implicit num: Numeric[B]): B
Inherited from:
IterableOnceOps
def reduce[B >: T](op: (B, B) => B): B
Inherited from:
IterableOnceOps
def reduceLeft[B >: T](op: (B, T) => B): B
Inherited from:
IterableOnceOps
def reduceLeftOption[B >: T](op: (B, T) => B): Option[B]
Inherited from:
IterableOnceOps
def reduceOption[B >: T](op: (B, B) => B): Option[B]
Inherited from:
IterableOnceOps
def reduceRight[B >: T](op: (T, B) => B): B
Inherited from:
IterableOnceOps
def reduceRightOption[B >: T](op: (T, B) => B): Option[B]
Inherited from:
IterableOnceOps
protected def reversed: Iterable[T]
Inherited from:
IterableOnceOps
def scan[B >: T](z: B)(op: (B, B) => B): Iterable[B]
Inherited from:
IterableOps
def scanLeft[B](z: B)(op: (B, T) => B): Iterable[B]
Inherited from:
IterableOps
def scanRight[B](z: B)(op: (T, B) => B): Iterable[B]
Inherited from:
IterableOps
def sizeCompare(that: Iterable[_]): Int
Inherited from:
IterableOps
def sizeCompare(otherSize: Int): Int
Inherited from:
IterableOps
Inherited from:
IterableOps
def slice(from: Int, until: Int): Iterable[T]
Inherited from:
IterableOps
def sliding(size: Int, step: Int): Iterator[Iterable[T]]
Inherited from:
IterableOps
def sliding(size: Int): Iterator[Iterable[T]]
Inherited from:
IterableOps
def span(p: T => Boolean): (Iterable[T], Iterable[T])
Inherited from:
IterableOps
override def splitAt(n: Int): (Iterable[T], Iterable[T])
Definition Classes
Inherited from:
IterableOps
def stepper[S <: Stepper[_]](implicit shape: StepperShape[T, S]): S
Inherited from:
IterableOnce
def sum[B >: T](implicit num: Numeric[B]): B
Inherited from:
IterableOnceOps
def tail: Iterable[T]
Inherited from:
IterableOps
Inherited from:
IterableOps
def take(n: Int): Iterable[T]
Inherited from:
IterableOps
def takeRight(n: Int): Iterable[T]
Inherited from:
IterableOps
def takeWhile(p: T => Boolean): Iterable[T]
Inherited from:
IterableOps
override def tapEach[U](f: T => U): Iterable[T]
Definition Classes
Inherited from:
IterableOps
def to[C1](factory: Factory[T, C1]): C1
Inherited from:
IterableOnceOps
def toArray[B >: T : ClassTag]: Array[B]
Inherited from:
IterableOnceOps
final def toBuffer[B >: T]: Buffer[B]
Inherited from:
IterableOnceOps
def toList: List[T]
Inherited from:
IterableOnceOps
def toMap[K, V](implicit ev: T <:< (K, V)): Map[K, V]
Inherited from:
IterableOnceOps
def toSeq: Seq[T]
Inherited from:
IterableOnceOps
def toSet[B >: T]: Set[B]
Inherited from:
IterableOnceOps
Inherited from:
IterableOnceOps
def transpose[B](implicit asIterable: T => Iterable[B]): Iterable[Iterable[B]]
Inherited from:
IterableOps
def unzip[A1, A2](implicit asPair: T => (A1, A2)): (Iterable[A1], Iterable[A2])
Inherited from:
IterableOps
def unzip3[A1, A2, A3](implicit asTriple: T => (A1, A2, A3)): (Iterable[A1], Iterable[A2], Iterable[A3])
Inherited from:
IterableOps
def view: View[T]
Inherited from:
IterableOps
Inherited from:
IterableOps
def zip[B](that: IterableOnce[B]): Iterable[(T, B)]
Inherited from:
IterableOps
def zipAll[A1 >: T, B](that: Iterable[B], thisElem: A1, thatElem: B): Iterable[(A1, B)]
Inherited from:
IterableOps
Inherited from:
IterableOps

Deprecated and Inherited methods

@deprecated(message = "Use ++ instead of ++: for collections of type Iterable", since = "2.13.0")
def ++:[B >: T](that: IterableOnce[B]): Iterable[B]
Deprecated
[Since version 2.13.0] Use ++ instead of ++: for collections of type Iterable
Inherited from:
IterableOps
@inline @deprecated(message = "Use foldLeft instead of /:", since = "2.13.0")
final def /:[B](z: B)(op: (B, T) => B): B
Deprecated
[Since version 2.13.0] Use foldLeft instead of /:
Inherited from:
IterableOnceOps
@inline @deprecated(message = "Use foldRight instead of :\\", since = "2.13.0")
final def :\[B](z: B)(op: (T, B) => B): B
Deprecated
[Since version 2.13.0] Use foldRight instead of :\\
Inherited from:
IterableOnceOps
@deprecated(message = "`aggregate` is not relevant for sequential collections. Use `foldLeft(z)(seqop)` instead.", since = "2.13.0")
def aggregate[B](z: => B)(seqop: (B, T) => B, combop: (B, B) => B): B
Deprecated
[Since version 2.13.0] `aggregate` is not relevant for sequential collections. Use `foldLeft(z)(seqop)` instead.
Inherited from:
IterableOnceOps
@inline @deprecatedOverriding(message = "Use iterableFactory instead", since = "2.13.0") @deprecated(message = "Use iterableFactory instead", since = "2.13.0")
Deprecated
[Since version 2.13.0] Use iterableFactory instead
Inherited from:
IterableOps
@inline @deprecated(message = "Use `dest ++= coll` instead", since = "2.13.0")
final def copyToBuffer[B >: T](dest: Buffer[B]): Unit
Deprecated
[Since version 2.13.0] Use `dest ++= coll` instead
Inherited from:
IterableOnceOps
@deprecated(message = "Check .knownSize instead of .hasDefiniteSize for more actionable information (see scaladoc for details)", since = "2.13.0")
Deprecated
[Since version 2.13.0] Check .knownSize instead of .hasDefiniteSize for more actionable information (see scaladoc for details)
Inherited from:
IterableOnceOps
@deprecated(message = "Use coll instead of repr in a collection implementation, use the collection value itself from the outside", since = "2.13.0")
final def repr: Iterable[T]
Deprecated
[Since version 2.13.0] Use coll instead of repr in a collection implementation, use the collection value itself from the outside
Inherited from:
IterableOps
@deprecated(message = "Iterable.seq always returns the iterable itself", since = "2.13.0")
def seq: Index[T]
Deprecated
[Since version 2.13.0] Iterable.seq always returns the iterable itself
Inherited from:
Iterable
@deprecated(message = "toIterable is internal and will be made protected; its name is similar to `toList` or `toSeq`, but it doesn\'t copy non-immutable collections", since = "2.13.7")
final def toIterable: Index[T]
Deprecated
[Since version 2.13.7] toIterable is internal and will be made protected; its name is similar to `toList` or `toSeq`, but it doesn\'t copy non-immutable collections
Inherited from:
Iterable
@inline @deprecated(message = "Use .iterator instead of .toIterator", since = "2.13.0")
final def toIterator: Iterator[T]
Deprecated
[Since version 2.13.0] Use .iterator instead of .toIterator
Inherited from:
IterableOnceOps
@inline @deprecated(message = "Use .to(LazyList) instead of .toStream", since = "2.13.0")
final def toStream: Stream[T]
Deprecated
[Since version 2.13.0] Use .to(LazyList) instead of .toStream
Inherited from:
IterableOnceOps
@deprecated(message = "toTraversable is internal and will be made protected; its name is similar to `toList` or `toSeq`, but it doesn\'t copy non-immutable collections", since = "2.13.0")
final def toTraversable: Iterable[T]
Deprecated
[Since version 2.13.0] toTraversable is internal and will be made protected; its name is similar to `toList` or `toSeq`, but it doesn\'t copy non-immutable collections
Inherited from:
IterableOps
@deprecated(message = "Use .view.slice(from, until) instead of .view(from, until)", since = "2.13.0")
def view(from: Int, until: Int): View[T]
Deprecated
[Since version 2.13.0] Use .view.slice(from, until) instead of .view(from, until)
Inherited from:
IterableOps