# Scala Vector transformer methods (syntax, examples)

This page contains a large collection of examples of how to use Scala Vector class transformer methods.

## Transformer methods

A transformer method is a method that constructs a new collection from an existing collection.

Method Returns
`collect(pf)` Creates a new collection by applying the partial function `pf` to all elements of the vector, returning elements for which the function is defined
`diff(c)` The difference between this vector and the collection `c`
`distinct` A new sequence with no duplicate elements
`flatten` Transforms a list of lists into a single list
`flatMap(f)` When working with sequences, it works like `map` followed by `flatten`
`map(f)` A new sequence by applying the function `f` to each element in the `Vector`
`reverse` A new sequence with the elements in reverse order
`sortWith(f)` A new sequence with the elements sorted with the use of the function `f`
`updated(i,v)` A new `Vector` with the element at index `i` replaced with the new value `v`
`union(c)` A new sequence that contains all elements of the vector and the collection `c`
`zip(c)` A collection of pairs by matching the vector with the elements of the collection `c`
`zipWithIndex` A vector of each element contained in a tuple along with its index
``````val x = Vector(Some(1), None, Some(3), None)
x.collect{case Some(i) => i}          # Vector(1, 3)

# diff
val oneToFive = (1 to 5).toVector     # val oneToFive = (1 to 5).toVector
val threeToSeven = (3 to 7).toVector  # Vector(3, 4, 5, 6, 7)
oneToFive.diff(threeToSeven)          # Vector(1, 2)
threeToSeven.diff(oneToFive)          # Vector(6, 7)

Vector(1,2,1,2).distinct              # Vector(1, 2)

val a = Vector(Seq(1,2), Seq(3,4))
a.flatten                             # Vector(1, 2, 3, 4)

# map, flatMap
val fruits = Vector("apple", "pear")
fruits.map(_.toUpperCase)             # Vector(APPLE, PEAR)
fruits.flatMap(_.toUpperCase)         # Vector(A, P, P, L, E, P, E, A, R)

Vector(1,2,3).reverse                 # Vector(3, 2, 1)

val nums = Vector(10, 5, 8, 1, 7)
nums.sorted                           # Vector(1, 5, 7, 8, 10)
nums.sortWith(_ < _)                  # Vector(1, 5, 7, 8, 10)
nums.sortWith(_ > _)                  # Vector(10, 8, 7, 5, 1)

Vector(1,2,3).updated(0,10)           # Vector(10, 2, 3)
Vector(2,4).union(Vector(1,3))        # Vector(2, 4, 1, 3)

# zip
val women = Vector("Wilma", "Betty")  # Vector(Wilma, Betty)
val men = Vector("Fred", "Barney")    # Vector(Fred, Barney)
val couples = women.zip(men)          # Vector((Wilma,Fred), (Betty,Barney))

val a = Vector.range('a', 'e')        # Vector(a, b, c, d)
a.zipWithIndex                        # Vector((a,0), (b,1), (c,2), (d,3))``````

## Scala Vector summary

I created this tutorial to show examples of Scala `Vector` transformer methods, but for many more examples of how to work with `Vector`, see my Scala Vector class syntax and method examples tutorial.