Scala Library: scala.collection.immutable.Stack
scala.collection.immutable.Stack
object Stack extends SeqFactory[Stack] with SerializableThis object provides a set of operations to create immutable.Stack values.
Type Members
type Coll = Stack[_]
The underlying collection type with unknown element type
- Attributes
- protected[this]
- Definition Classes
- GenericCompanion
class GenericCanBuildFrom[A] extends CanBuildFrom[CC[_], A, CC[A]]
A generic implementation of the CanBuildFrom trait, which forwards all calls
to apply(from) to the genericBuilder method of collection from , and which
forwards all calls of apply() to the newBuilder method of this factory.
- Definition Classes
- GenTraversableFactory
Value Members From scala.collection.generic.GenTraversableFactory
def ReusableCBF: GenericCanBuildFrom[Nothing]
- Definition Classes
- GenTraversableFactory
(defined at scala.collection.generic.GenTraversableFactory)
def concat[A](xss: collection.Traversable[A]*): Stack[A]
Concatenates all argument collections into a single collection.
- xss
- the collections that are to be concatenated.
- returns
- the concatenation of all the collections.
- Definition Classes
- GenTraversableFactory
(defined at scala.collection.generic.GenTraversableFactory)
def fill[A](n: Int)(elem: ⇒ A): Stack[A]
Produces a collection containing the results of some element computation a number of times.
- n
- the number of elements contained in the collection.
- elem
- the element computation
- returns
- A collection that contains the results of
nevaluations ofelem.
- A collection that contains the results of
- Definition Classes
- GenTraversableFactory
(defined at scala.collection.generic.GenTraversableFactory)
def fill[A](n1: Int, n2: Int)(elem: ⇒ A): Stack[Stack[A]]
Produces a two-dimensional collection containing the results of some element computation a number of times.
- n1
- the number of elements in the 1st dimension
- n2
- the number of elements in the 2nd dimension
- elem
- the element computation
- returns
- A collection that contains the results of
n1 x n2evaluations ofelem.
- A collection that contains the results of
- Definition Classes
- GenTraversableFactory
(defined at scala.collection.generic.GenTraversableFactory)
def fill[A](n1: Int, n2: Int, n3: Int)(elem: ⇒ A): Stack[Stack[Stack[A]]]
Produces a three-dimensional collection containing the results of some element computation a number of times.
- n1
- the number of elements in the 1st dimension
- n2
- the number of elements in the 2nd dimension
- n3
- the number of elements in the 3nd dimension
- elem
- the element computation
- returns
- A collection that contains the results of
n1 x n2 x n3evaluations ofelem.
- A collection that contains the results of
- Definition Classes
- GenTraversableFactory
(defined at scala.collection.generic.GenTraversableFactory)
def fill[A](n1: Int, n2: Int, n3: Int, n4: Int)(elem: ⇒ A): Stack[Stack[Stack[Stack[A]]]]
Produces a four-dimensional collection containing the results of some element computation a number of times.
- n1
- the number of elements in the 1st dimension
- n2
- the number of elements in the 2nd dimension
- n3
- the number of elements in the 3nd dimension
- n4
- the number of elements in the 4th dimension
- elem
- the element computation
- returns
- A collection that contains the results of
n1 x n2 x n3 x n4evaluations ofelem.
- A collection that contains the results of
- Definition Classes
- GenTraversableFactory
(defined at scala.collection.generic.GenTraversableFactory)
def fill[A](n1: Int, n2: Int, n3: Int, n4: Int, n5: Int)(elem: ⇒ A): Stack[Stack[Stack[Stack[Stack[A]]]]]
Produces a five-dimensional collection containing the results of some element computation a number of times.
- n1
- the number of elements in the 1st dimension
- n2
- the number of elements in the 2nd dimension
- n3
- the number of elements in the 3nd dimension
- n4
- the number of elements in the 4th dimension
- n5
- the number of elements in the 5th dimension
- elem
- the element computation
- returns
- A collection that contains the results of
n1 x n2 x n3 x n4 x n5evaluations ofelem.
- A collection that contains the results of
- Definition Classes
- GenTraversableFactory
(defined at scala.collection.generic.GenTraversableFactory)
def iterate[A](start: A, len: Int)(f: (A) ⇒ A): Stack[A]
Produces a collection containing repeated applications of a function to a start value.
- start
- the start value of the collection
- len
- the number of elements contained inthe collection
- f
- the function that’s repeatedly applied
- returns
- a collection with
lenvalues in the sequencestart, f(start), f(f(start)), ...
- a collection with
- Definition Classes
- GenTraversableFactory
(defined at scala.collection.generic.GenTraversableFactory)
def range[T](start: T, end: T)(implicit arg0: Integral[T]): Stack[T]
Produces a collection containing a sequence of increasing of integers.
- start
- the first element of the collection
- end
- the end value of the collection (the first value NOT contained)
- returns
- a collection with values
start, start + 1, ..., end - 1
- a collection with values
- Definition Classes
- GenTraversableFactory
(defined at scala.collection.generic.GenTraversableFactory)
def range[T](start: T, end: T, step: T)(implicit arg0: Integral[T]): Stack[T]
Produces a collection containing equally spaced values in some integer interval.
- start
- the start value of the collection
- end
- the end value of the collection (the first value NOT contained)
- step
- the difference between successive elements of the collection (must be positive or negative)
- returns
- a collection with values
start, start + step, ...up to, but excludingend
- a collection with values
- Definition Classes
- GenTraversableFactory
(defined at scala.collection.generic.GenTraversableFactory)
def tabulate[A](n: Int)(f: (Int) ⇒ A): Stack[A]
Produces a collection containing values of a given function over a range of integer values starting from 0.
- n
- The number of elements in the collection
- f
- The function computing element values
- returns
- A collection consisting of elements
f(0), ..., f(n -1)
- A collection consisting of elements
- Definition Classes
- GenTraversableFactory
(defined at scala.collection.generic.GenTraversableFactory)
def tabulate[A](n1: Int, n2: Int)(f: (Int, Int) ⇒ A): Stack[Stack[A]]
Produces a two-dimensional collection containing values of a given function over ranges of integer values starting from 0.
- n1
- the number of elements in the 1st dimension
- n2
- the number of elements in the 2nd dimension
- f
- The function computing element values
- returns
- A collection consisting of elements
f(i1, i2)for0 <= i1 < n1and0 <= i2 < n2.
- A collection consisting of elements
- Definition Classes
- GenTraversableFactory
(defined at scala.collection.generic.GenTraversableFactory)
def tabulate[A](n1: Int, n2: Int, n3: Int)(f: (Int, Int, Int) ⇒ A): Stack[Stack[Stack[A]]]
Produces a three-dimensional collection containing values of a given function over ranges of integer values starting from 0.
- n1
- the number of elements in the 1st dimension
- n2
- the number of elements in the 2nd dimension
- n3
- the number of elements in the 3nd dimension
- f
- The function computing element values
- returns
- A collection consisting of elements
f(i1, i2, i3)for0 <= i1 < n1,0 <= i2 < n2, and0 <= i3 < n3.
- A collection consisting of elements
- Definition Classes
- GenTraversableFactory
(defined at scala.collection.generic.GenTraversableFactory)
def tabulate[A](n1: Int, n2: Int, n3: Int, n4: Int)(f: (Int, Int, Int, Int) ⇒ A): Stack[Stack[Stack[Stack[A]]]]
Produces a four-dimensional collection containing values of a given function over ranges of integer values starting from 0.
- n1
- the number of elements in the 1st dimension
- n2
- the number of elements in the 2nd dimension
- n3
- the number of elements in the 3nd dimension
- n4
- the number of elements in the 4th dimension
- f
- The function computing element values
- returns
- A collection consisting of elements
f(i1, i2, i3, i4)for0 <= i1 < n1,0 <= i2 < n2,0 <= i3 < n3, and0 <= i4 < n4.
- A collection consisting of elements
- Definition Classes
- GenTraversableFactory
(defined at scala.collection.generic.GenTraversableFactory)
def tabulate[A](n1: Int, n2: Int, n3: Int, n4: Int, n5: Int)(f: (Int, Int, Int, Int, Int) ⇒ A): Stack[Stack[Stack[Stack[Stack[A]]]]]
Produces a five-dimensional collection containing values of a given function over ranges of integer values starting from 0.
- n1
- the number of elements in the 1st dimension
- n2
- the number of elements in the 2nd dimension
- n3
- the number of elements in the 3nd dimension
- n4
- the number of elements in the 4th dimension
- n5
- the number of elements in the 5th dimension
- f
- The function computing element values
- returns
- A collection consisting of elements
f(i1, i2, i3, i4, i5)for0 <= i1 < n1,0 <= i2 < n2,0 <= i3 < n3,0 <= i4 < n4, and0 <= i5 < n5.
- A collection consisting of elements
- Definition Classes
- GenTraversableFactory
(defined at scala.collection.generic.GenTraversableFactory)
Value Members From scala.collection.generic.GenericCompanion
def apply[A](elems: A*): Stack[A]
Creates a collection with the specified elements.
- A
- the type of the collection’s elements
- elems
- the elements of the created collection
- returns
- a new collection with elements
elems
- a new collection with elements
- Definition Classes
- GenericCompanion
(defined at scala.collection.generic.GenericCompanion)
def empty[A]: Stack[A]
An empty collection of type CC[A]
- A
- the type of the collection’s elements
- Definition Classes
- GenericCompanion
(defined at scala.collection.generic.GenericCompanion)
Value Members From scala.collection.generic.SeqFactory
def unapplySeq[A](x: Stack[A]): Some[Stack[A]]
This method is called in a pattern match { case Seq(…) => }.
- x
- the selector value
- returns
- sequence wrapped in an option, if this is a Seq, otherwise none
- Definition Classes
- SeqFactory
(defined at scala.collection.generic.SeqFactory)
Value Members From scala.collection.immutable.Stack
implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Stack[A]]
The standard CanBuildFrom instance for immutable.Stack objects. The created
value is an instance of class GenericCanBuildFrom , which forwards calls to
create a new builder to the genericBuilder method of the requesting
collection.
(defined at scala.collection.immutable.Stack)
def newBuilder[A]: Builder[A, Stack[A]]
The default builder for immutable.Stack objects.
- A
- the type of the immutable stack’s elements
- Definition Classes
- Stack → GenericCompanion (defined at scala.collection.immutable.Stack)
Full Source:
/* __ *\
** ________ ___ / / ___ Scala API **
** / __/ __// _ | / / / _ | (c) 2003-2013, LAMP/EPFL **
** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
** /____/\___/_/ |_/____/_/ | | **
** |/ **
\* */
package scala
package collection
package immutable
import generic._
import mutable.{ ArrayBuffer, Builder }
/** $factoryInfo
* @define Coll `immutable.Stack`
* @define coll immutable stack
*/
object Stack extends SeqFactory[Stack] {
/** $genericCanBuildFromInfo */
implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Stack[A]] = ReusableCBF.asInstanceOf[GenericCanBuildFrom[A]]
def newBuilder[A]: Builder[A, Stack[A]] = new ArrayBuffer[A] mapResult (buf => new Stack(buf.toList))
}
/** This class implements immutable stacks using a list-based data
* structure.
*
* '''Note:''' This class exists only for historical reason and as an
* analogue of mutable stacks.
* Instead of an immutable stack you can just use a list.
*
* @tparam A the type of the elements contained in this stack.
*
* @author Matthias Zenger
* @version 1.0, 10/07/2003
* @since 1
* @see [[http://docs.scala-lang.org/overviews/collections/concrete-immutable-collection-classes.html#immutable_stacks "Scala's Collection Library overview"]]
* section on `Immutable stacks` for more information.
*
* @define Coll `immutable.Stack`
* @define coll immutable stack
* @define orderDependent
* @define orderDependentFold
* @define mayNotTerminateInf
* @define willNotTerminateInf
*/
@SerialVersionUID(1976480595012942526L)
@deprecated("Stack is an inelegant and potentially poorly-performing wrapper around List. Use List instead: stack push x becomes x :: list; stack.pop is list.tail.", "2.11.0")
class Stack[+A] protected (protected val elems: List[A])
extends AbstractSeq[A]
with LinearSeq[A]
with GenericTraversableTemplate[A, Stack]
with LinearSeqOptimized[A, Stack[A]]
with Serializable {
override def companion: GenericCompanion[Stack] = Stack
def this() = this(Nil)
/** Checks if this stack is empty.
*
* @return true, iff there is no element on the stack.
*/
override def isEmpty: Boolean = elems.isEmpty
override def head = elems.head
override def tail = new Stack(elems.tail)
/** Push an element on the stack.
*
* @param elem the element to push on the stack.
* @return the stack with the new element on top.
*/
def push[B >: A](elem: B): Stack[B] = new Stack(elem :: elems)
/** Push a sequence of elements onto the stack. The last element
* of the sequence will be on top of the new stack.
*
* @param elems the element sequence.
* @return the stack with the new elements on top.
*/
def push[B >: A](elem1: B, elem2: B, elems: B*): Stack[B] =
this.push(elem1).push(elem2).pushAll(elems)
/** Push all elements provided by the given traversable object onto
* the stack. The last element returned by the traversable object
* will be on top of the new stack.
*
* @param xs the iterator object.
* @return the stack with the new elements on top.
*/
def pushAll[B >: A](xs: TraversableOnce[B]): Stack[B] =
((this: Stack[B]) /: xs.toIterator)(_ push _)
/** Returns the top element of the stack. An error is signaled if
* there is no element on the stack.
*
* @throws java.util.NoSuchElementException
* @return the top element.
*/
def top: A =
if (!isEmpty) elems.head
else throw new NoSuchElementException("top of empty stack")
/** Removes the top element from the stack.
* Note: should return `(A, Stack[A])` as for queues (mics)
*
* @throws java.util.NoSuchElementException
* @return the new stack without the former top element.
*/
def pop: Stack[A] =
if (!isEmpty) new Stack(elems.tail)
else throw new NoSuchElementException("pop of empty stack")
def pop2: (A, Stack[A]) =
if (!isEmpty) (elems.head, new Stack(elems.tail))
else throw new NoSuchElementException("pop of empty stack")
override def reverse: Stack[A] = new Stack(elems.reverse)
/** Returns an iterator over all elements on the stack. The iterator
* issues elements in the reversed order they were inserted into the
* stack (LIFO order).
*
* @return an iterator over all stack elements.
*/
override def iterator: Iterator[A] = elems.iterator
/** Returns a string representation of this stack.
*/
override def toString() = elems.mkString("Stack(", ", ", ")")
}Interested in Scala?
I send out weekly, personalized emails with articles and conference talks.
Subscribe now.